一、获取数据库连接的方法
① 导入mysql.jar包,此jar包提供了数据库和java进行连接的相关功能
② 在web包下的WEB-INF包下,新建一个lib包,将准备好的mysql.jar包,放在lib包下,通过右键选择As a library,点击ok即可导入mysql.jar包,没有jar包的可以下载,通过maven库下载相关的jar包
③ 在src包下,新建util包用来存放工具类,新建test包用来存放测试类
④ 在util包下创建,JDBCUtil类
package util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class JDBCUtil { //步骤1:静态化加载数据库驱动 //步骤2:创建一个static对外开放的方法,获取Connection链接 static { try { Class.forName("com.mysql.cj.jdbc.Driver");//本质加载某个类的路径,就是mysql.jar包下的路径 } catch (ClassNotFoundException e) { System.out.println("数据库驱动加载失败,原因是" + e ); } } //获取数据库连接的方法 public static Connection getConn(){ //url地址是需要加上很多参数,目前用不上 try { Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/数据库名", "数据库用户名", "数据库用户密码"); return connection; } catch (SQLException e) { System.out.println("数据库链接获取失败,原因是:" + e); return null; } } } //关闭数据库常用资源的方法 public static void close(Connection conn, PreparedStatement pre, ResultSet rs){ try { if (rs!=null){ rs.close(); } if (pre!=null){ pre.close(); } if (conn!=null){ conn.close(); } }catch (Exception e){ System.out.println("资源关闭失败:"+e); }
在test包下,创建Test测试类,通过main()方法,执行System.out.println(JDBCUtil.getConn());语句,输出字符串地址表示连接成功
二、java获取数据库数据的方法
① 在src包下,新建dao包,用来存放java和数据库交换的类,命名为XxxDao
② 获取数据库数据的底层就是数据库数据的查询,所以我们需要写一个查询方法
//查询所有数据 public List<Userinfo> queryAll(){//表示将数据库的多行数据转成多个实体类组成的集合 List<Userinfo> list = new ArrayList<Userinfo>();//存储数据的集合 String sql = "select * from userinfo";//编写sql语句 Connection conn = JDBCUtil.getConn();//获取数据库的连接 PreparedStatement pre = null; try { pre = conn.prepareStatement(sql);//预编译sql语句 ResultSet rs = pre.executeQuery();//rs存储了多条数据的结果集 //rs.geXxx()方法,Xxx表示获取对应的值类型,方法表示获取数据库某一个字段的值,参数表示第几个字段 while(rs.next()){//rs.next是否还有下条数据 Userinfo userinfo = new Userinfo(rs.getInt(1),rs.getString(2),rs.getString(3),rs.getString(4),rs.getInt(5),rs.getString(6));//将每一个字段的数据存储到实体类中 list.add(userinfo); } return list;//返回数据库数据 } catch (SQLException throwables) { System.out.println("查询sql编译失败" + throwables ); return null; }finally{ JDBCUtil.close(conn,pre,rs);//关闭资源流 } }
通过实例化XxxDao,调用此方法即可获取数据库的数据,通过List集合接收返回值,执行System.out.println(集合名); 即可将数据库数据输出在控制台中,excuteQuery()方法,用于执行数据库中查询的sql语句
//实例化dao类 XxxDao xd = new XxxDao(); //调用queryAll()方法,接收返回值 List list = xd.queryAll(); //输出在控制塔 System.out.println(list);
三、java将数据存入数据库
① 将java数据存入数据库底层是数据库数据的插入
//添加一条数据 public boolean add( Userinfo userinfo ){//表示是否添加成功 String sql = "insert into userinfo values(null,?,?,?,?,?)"; Connection conn = JDBCUtil.getConn(); PreparedStatement pre = null; try { pre = conn.prepareStatement(sql); pre.setString(1,userinfo.getUsername()); pre.setString(2,userinfo.getPassword()); pre.setString(3,userinfo.getSex()); pre.setInt(4,userinfo.getAge()); pre.setString(5,userinfo.getLikes()); int i = pre.executeUpdate();//返回受影响的行数 if (i==1){ return true; }else{ return false; } } catch (SQLException throwables) { System.out.println("添加sql编译失败" + throwables ); return false; } }
② 这里我们使用 ? 传参符,一个问号代表一个字段,通过Connection conn = JDBCUtil.getConn(); 获取数据库的连接,conn.prepareStatement(sql)方法是预编译sql语句,通过pre.set存储值的类型()方法,将数据存入数据库,第一个参数表示?传参符的位置,第二个参数是需要传入的值,通过方法的形参列表传入,executeUpdate()方法用于执行数据库中增、删和改的sql语句