4.JDBC
4.1JDBC概述
全称: Java database connectivity java连接数据库
使用Java代码去连接数据库,然后对数据库中的数据进行增删改查!!!
JDBC:是一种规范,sun公司想让Java去连mysql数据库。然后他(Java)就去和mysql厂商
Java厂商让mysql厂商去提供驱动,是连接数据库的驱动。所以mysql自己封装了一个jar包,这个jar就是
连接数据库的驱动
4.2入门案例
1.加载驱动
是mysql厂商提供 ,是不是jdk的东西,所以要下载jar包因为jar】包中有那个Driver类
如何下载jar包?
1.百度 https://mvnrepository.com/ 2.在搜索框中输入mysql 3.找到版本 5.1.47 版本jar包点进去将下载好的jar导入到咱们的工程中
1.在src文件夹下面新建一个lib文件 2.将下载好的jar包复制到lib文件夹下面 3.鼠标点上这个jar包,右键add as Libaray... 即可
package com.qf.a_mysql; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class Demo1 { public static void main(String[] args) throws ClassNotFoundException, SQLException { //1.加载mysql的驱动 //Driver驱动是mysql厂商提供的 Class.forName("com.mysql.jdbc.Driver"); //连接数据库的时候需要跑哪些东西 //http://ww.baidu.com //主机: 是一个url jdbc:mysql://localhost:3306/java2304 //用户名: root //密码: 123456 //2.准备连接数据库的一些参数 String url = "jdbc:mysql://localhost:3306/java2304?useSSL=false"; String user = "root"; String password = "123456"; //static Connection getConnection(String url, String user, String password) //3.尝试建立与给定数据库URL的连接。 Connection connection = DriverManager.getConnection(url, user, password); System.out.println(connection); //Connection 与特定数据库的连接(会话) 执行SQL语句并在连接的上下文中返回结果 //4.关闭连接的资源 connection.close(); } }
以上是连接数据库的操作
4.3对数据库中表中的数据进行增删改查
4.3.1对数据库中表中的数据进行添加操作
package com.qf.b_mysql; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class Demo1 { public static void main(String[] args) throws ClassNotFoundException, SQLException { //1.加载驱动 Class.forName("com.mysql.jdbc.Driver"); //2.准备连接数据库的参数 String url = "jdbc:mysql://localhost:3306/java2304?useSSL=false"; String user = "root"; String password = "123456"; //3.获取连接数据库的对象 Connection connection = DriverManager.getConnection(url, user, password); //代码走到这一步,代码没有报错,就证明连接数据库已经成功 //Statement createStatement() //创建一个 Statement对象,用于将SQL语句发送到数据库。去执行 //4.创建搬运工对象 Statement对象 将SQL语句发送到数据库。去执行 Statement statement = connection.createStatement(); //5.写sql语句 String sql = "insert into work(name, age, info) values('老邢', 89, '爱吃猪头肉')"; //6.使用statement对象去执行sql语 //int executeUpdate(String sql) //执行给定的SQL语句,这可能是 INSERT , UPDATE ,或 DELETE语句, // 或者不返回任何内容,如SQL DDL语句的SQL语句。 int i = statement.executeUpdate(sql); System.out.println(i); //7.关闭资源 statement.close(); connection.close(); } }
4.3.2对数据库中表的数据进行修改的操作
package com.qf.b_mysql; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class Demo2 { public static void main(String[] args) throws ClassNotFoundException, SQLException { //修改一条数据 Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/java2304?useSSL=false"; String user = "root"; String password = "123456"; Connection connection = DriverManager.getConnection(url, user, password); Statement statement = connection.createStatement(); String sql= "update work set name='骚磊', info='骚的一批' where id = 1"; int i = statement.executeUpdate(sql); System.out.println(i); statement.close(); connection.close(); } }
4.3.3对数据库中表的数据进行删除
package com.qf.b_mysql; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class Demo3 { public static void main(String[] args) throws Exception{ //删除一条数据 Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/java2304?useSSL=false"; String user = "root"; String password = "123456"; Connection connection = DriverManager.getConnection(url, user, password); Statement statement = connection.createStatement(); String sql= "delete from work where id = 1"; int i = statement.executeUpdate(sql); System.out.println(i); statement.close(); connection.close(); } }
4.3.4查询数据库中所有的数据
package com.qf.c_mysql; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class Demo1 { public static void main(String[] args) throws Exception{ Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/java2304?useSSL=false"; String user = "root"; String password = "123456"; Connection connection = DriverManager.getConnection(url, user, password); Statement statement = connection.createStatement(); String sql = "select * from work"; //ResultSet executeQuery(String sql) //执行给定的SQL语句,该语句返回单个 ResultSet对象。 结果集 ResultSet resultSet = statement.executeQuery(sql); //一个ResultSet对象,其中包含给定查询产生的数据 就是数据库中的数据 //表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。 System.out.println(resultSet); //ResultSet对象保持一个光标指向其当前的数据行。 // 最初,光标位于第一行之前。 next方法将光标移动到下一行, // 并且由于在ResultSet对象中没有更多行时返回false , // 因此可以在while循环中使用循环来遍历结果集。 while (resultSet.next()) { //通过字段的值获取当前字段的数据 //int id = resultSet.getInt("id"); int id = resultSet.getInt(1); String name = resultSet.getString("name"); int age = resultSet.getInt("age"); String info = resultSet.getString("info"); System.out.println(id + ":" + name + ":" + age + ":" + info); } resultSet.close(); statement.close(); connection.close(); } }
查询出来的数据就是单纯打印一下吗?并不是的,你要将查询出来的数据赋值给一个类对象,然后存到集合中
package com.qf.c_mysql; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.util.ArrayList; import java.util.List; public class Demo1 { public static void main(String[] args) throws Exception{ Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/java2304?useSSL=false"; String user = "root"; String password = "123456"; Connection connection = DriverManager.getConnection(url, user, password); Statement statement = connection.createStatement(); String sql = "select * from work"; //ResultSet executeQuery(String sql) //执行给定的SQL语句,该语句返回单个 ResultSet对象。 结果集 ResultSet resultSet = statement.executeQuery(sql); //一个ResultSet对象,其中包含给定查询产生的数据 就是数据库中的数据 //表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。 System.out.println(resultSet); //ResultSet对象保持一个光标指向其当前的数据行。 // 最初,光标位于第一行之前。 next方法将光标移动到下一行, // 并且由于在ResultSet对象中没有更多行时返回false , // 因此可以在while循环中使用循环来遍历结果集。 List<Work> works = new ArrayList<>(); while (resultSet.next()) { //通过字段的值获取当前字段的数据 //int id = resultSet.getInt("id"); int id = resultSet.getInt(1); String name = resultSet.getString("name"); int age = resultSet.getInt("age"); String info = resultSet.getString("info"); Work work = new Work(id, name, age, info); works.add(work); } System.out.println(works); resultSet.close(); statement.close(); connection.close(); } }