java通过JDBC获取MySQL的数据实现

来源:互联网 发布:ug nx软件 编辑:程序博客网 时间:2024/05/18 20:11

由慕课网听之,后简单的捋了一下,记下来,备后用


要从eclipse中的java代码获取到MySQL数据库中的信息,Java提供了JDBC作为桥梁来实现


首先需要在我们的项目中导入JDBC相关的包

下载:mysql-connector-java-5.0.8-bin.jar文件

需要将其导入,可以直接右键项目进行导入,但是当移动项目到其它地方时,该文件不会随之移动;另外一种方法是在项目下面新建lib文件(new—> floder),再将文件拖到lib里面,选copy,然后右键文件,Build Path 进行导入


其次是Java代码

如下(我都做了详细的注释)

public class DBUtil {/* * URL中的127.0.0.1为本机地址,回送地址,因为MySQL服务是在本机上,java程序也在本机上, * imooc为MySQL中一个数据库,指定后,后面便是对其中的表进行操作 * USER是MySQL用户的用户名,PASSWORD为密码 */private static final String URL="jdbc:mysql://127.0.0.1:3306/imooc";private static final String USER="root";private static final String PASSWORD="23232";public static void main(String[] args) throws Exception {//1.加载驱动程序/* * 在com.mysql.jdbc.Driver中有一个静态的方法,new一个Driver,并将其加载到DriverManager中,代码如下 * static {                  try {                        java.sql.DriverManager.registerDriver(new Driver());                       } catch (SQLException E) {                           throw new RuntimeException(“Can’t register driver!”);                       }                 } * Class.forName()方法初始化指定的类(会执行其中的static...),并返回该类的对象 */Class.forName("com.mysql.jdbc.Driver");/*2.获得数据库的连接 * 在这其中的将URL,USER,PASSWORD传入DriverManager中的Driver对象(在JDBC中), * 通过JDBC返回一个连接给java的sql */Connection con=DriverManager.getConnection(URL, USER, PASSWORD);//3.通过数据库的连接操作数据库,实现增删改查Statement statement=con.createStatement();//查询数据,其中输入sql语句ResultSet rSet=statement.executeQuery("SELECT name,age FROM tabletest");//rSet.next()返回的是一个布尔类型的值,而且将指针指向下一条记录while(rSet.next()){/* * 将获得的数据输入到控制台上,注意得到的方法,因为之前查询时获得的是两个值,一个string,一个int, * 使用其中的参数为string的方法,将值得名称传进去 */System.out.println(rSet.getString("name")+","+rSet.getInt("age"));}}}

这样便实现了简单的连接,获取数据库的信息;

下面再附上操作数据库的代码

import java.sql.Connection;import java.sql.Date;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;import java.util.List;import java.util.Map;import com.test.Godess.Godes;import com.test.jdbcconnect.DBUtil;public class GoddessMod {public void addGoddess(Godes g) throws Exception {// 每次对数据库操作的时候都要建立连接Connection connection = DBUtil.getConnect();// 下面的3块是一个完整体系// (1) sql语句字符串,并没有实际的赋值,这样可以抽象化// 这里并没有给id赋值,因为在表中id为主键,且设为自动递增String sql = "" + "INSERT INTO tabletest" + "(name,age,birthday) VALUES(" + "?,?,?)";// (2)预处理,类似于sql中的存储过程PreparedStatement pres = connection.prepareStatement(sql);// (3)赋值pres.setString(1, g.getName());pres.setInt(2, g.getAge());pres.setDate(3, new Date(g.getBirthday().getTime()));// 执行,增,删,改 ,用下面的语句,查用executeQuery();pres.execute();}public void updateGoddess(Godes goddess) throws Exception {Connection connection = DBUtil.getConnect();String sql = "UPDATE tabletest SET name=?,age=?,birthday=? WHERE id=?";PreparedStatement prem = connection.prepareStatement(sql);prem.setString(1, goddess.getName());prem.setInt(2, goddess.getAge());prem.setDate(3, new Date(goddess.getBirthday().getTime()));prem.setInt(4, 1);prem.execute();}public void delGoddess(Integer id) throws SQLException {Connection connection = DBUtil.getConnect();String sql = "DELETE FROM tabletest WHERE id=?";PreparedStatement prem = connection.prepareStatement(sql);prem.setInt(1, id);prem.execute();}public List<Godes> query() throws Exception {Connection connection = DBUtil.getConnect();// 3.通过数据库的连接操作数据库,实现增删改查Statement statement = connection.createStatement();// 查询数据,其中输入sql语句ResultSet rSet = statement.executeQuery("SELECT name,age FROM tabletest");List<Godes> goddessList = new ArrayList<Godes>();Godes goddess;// rSet.next()返回的是一个布尔类型的值,而且将指针指向下一条记录while (rSet.next()) {/* * 将获得的数据输入到控制台上,注意得到的方法,因为之前查询时获得的是两个值,一个string,一个int, * 使用其中的参数为string的方法,将值得名称传进去 */// System.out.println(rSet.getString("name")+","+rSet.getInt("age"));goddess = new Godes();goddess.setName(rSet.getString("name"));goddess.setAge(rSet.getInt("age"));goddessList.add(goddess);}return goddessList;}public List<Godes> queryForContdition(List<Map<String, Object>> perm) throws Exception {Connection connection = DBUtil.getConnect();// 使用stringBuilder不同于字符串(每次修改都会创建开销),对于多次修改的,用StringBuilder好StringBuilder sql = new StringBuilder();sql.append("SELECT * FROM tabletest WHERE 1=1 ");// sql.append(" AND "+"name"+"="+"'Tony'");for (Map<String, Object> map : perm) {sql.append(" AND " + map.get("attr") + " " + map.get("relation") + " " + map.get("value"));}// 注意与上面查询的写法// 由于没有?,可以省略第三步PreparedStatement statement = connection.prepareStatement(sql.toString());// 这个为查询,因此不同于其它三种ResultSet rSet = statement.executeQuery();Godes goddess;List<Godes> goddessList = new ArrayList<Godes>();while (rSet.next()) {goddess = new Godes();goddess.setId(rSet.getInt("id"));goddess.setName(rSet.getString("name"));goddess.setAge(rSet.getInt("age"));goddess.setBirthday(rSet.getDate("birthday"));goddessList.add(goddess);}return goddessList;}}


参考

关于com.mysql.jdbc.Driver

Class.forName()用法

127.0.0.1百科



0 0