一、JDBC

1.1JDBC的概述

JDBD: Java Database Connectivity

使用java代码去连接数据库

JDK:

  1. java.sql.*
  2. javax.sql.*

JDK提供了很多类库让咱们去操作数据库

需要第三方的jar包,jdk只负责增删改查的操作,不负责连上数据库

第三方jar包:mysql-connector-java.jar

如何下载第三方jar包:

  1. 1.百度:[http://mvnrepository.com](http://mvnrepository.com)
  2. 2.搜索mysql
  3. 3.选择MySQL Connector/J
  4. 4.选择一个版本,点击Files下载

1.2连接数据库需要那些参数

mysql -hlocalhost -uroot -p123456

1.需要知道连接哪一款数据库 mysql

2.数据库的服务器的地址 localhost 本机地址

3.数据库的用户名 root

4.数据库的密码 123456

1.3借助JDBC连接数据库

1.在当前工程中导入第三方jar包

  1. 1.1src下新建一个lib的文件夹
  2. 1.2jar包粘贴到lib文件夹下
  3. 1.3点击jar包,右键 add
  1. package com.qfedu.test1;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. import java.sql.SQLException;
  5. /**
  6. * @author shkstart
  7. * @create 2022-04-26-10:29
  8. */
  9. public class Demo1 {
  10. public static void main(String[] args) throws ClassNotFoundException, SQLException {
  11. //1.加载驱动
  12. //forName 方法的参数 包名+类名 编译期间会将整个类加载
  13. //Driver 这个类会被加载 就是驱动
  14. //Driver 这个类部在jdk里面 需要导包jar
  15. Class.forName("com.mysql.jdbc.Driver");
  16. //2.准备一个url url是连接数据库的
  17. String url = "jdbc:mysql://localhost:3306/java2204?useSSL=false";
  18. //3.准备用户名和密码
  19. String user = "root";
  20. String password = "123456";
  21. //4.使用驱动管理器类去获取连接数据库对象
  22. /**
  23. * getConnection(String url,String user,String password)
  24. * 尝试建立与给定数据库url的连接,连上一个数据库的一个方法
  25. * 返回值 Connection 是个接口 是一个连接对象
  26. *
  27. */
  28. Connection connection = DriverManager.getConnection(url, user, password);
  29. //打印以下connection
  30. System.out.println(connection);
  31. connection.close();
  32. }
  33. }

1.4JDBC的增删改查

数据库已经连接上了,接下来开始对数据库下面的表进行增删改查

1.4.1增 executeUpdate

  1. package com.qfedu.test2mysql;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. import java.sql.SQLException;
  5. import java.sql.Statement;
  6. /**
  7. * @author shkstart
  8. * @create 2022-04-26-11:17
  9. */
  10. public class Demo1 {
  11. public static void main(String[] args) throws ClassNotFoundException, SQLException {
  12. Class.forName("com.mysql.jdbc.Driver");
  13. String url = "jdbc:mysql://localhost:3306/java2204?useSSL=false";
  14. String user = "root";
  15. String password = "123456";
  16. Connection connection = DriverManager.getConnection(url, user, password);
  17. //Statement对象 可以将sql语句发送到数据库进行执行
  18. Statement statement = connection.createStatement();
  19. //再写sql语句是一定要有这个表
  20. int i = statement.executeUpdate("insert into work(id,name,age) value(1,'博儿',18);");
  21. System.out.println(i);
  22. //需要手动关闭一些资源
  23. statement.close();
  24. connection.close();
  25. }
  26. }

1.4.2删 executeUpdate

  1. package com.qfedu.test2mysql;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. import java.sql.Statement;
  5. /**
  6. * @author shkstart
  7. * @create 2022-04-26-11:37
  8. */
  9. public class Demo2 {
  10. public static void main(String[] args) throws Exception {
  11. Class.forName("com.mysql.jdbc.Driver");
  12. String url = "jdbc:mysql://localhost:3306/java2204?useSSL=false";
  13. Connection connection = DriverManager.getConnection(url, "root", "123456");
  14. Statement statement = connection.createStatement();
  15. int i = statement.executeUpdate("delete from work where id = 1");
  16. System.out.println(i);
  17. statement.close();
  18. connection.close();
  19. }
  20. }

注:防警告,加时区

  1. String url = "jdbc:mysql://localhost:3306/java2204?useSSL=false&serverTimezone=Asia/Shanghai";

1.4.3改 executeUpdate

  1. package com.qfedu.test2mysql;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. import java.sql.Statement;
  5. /**
  6. * @author shkstart
  7. * @create 2022-04-26-14:22
  8. */
  9. public class Demo3update {
  10. public static void main(String[] args) throws Exception {
  11. Class.forName("com.mysql.jdbc.Driver");
  12. String url = "jdbc:mysql://localhost:3306/java2204?useSSL=false";
  13. String user = "root";
  14. String paw = "123456";
  15. Connection connection = DriverManager.getConnection(url, user, paw);
  16. Statement statement = connection.createStatement();
  17. int i = statement.executeUpdate("update work set id = 1 where id = 4");
  18. System.out.println(i);
  19. int i1 = statement.executeUpdate("update work set id = 2,name = '杨博是条狗'where id = 5");
  20. System.out.println(i1);
  21. statement.close();
  22. connection.close();
  23. }
  24. }

1.4.4查 executeQuery

光标从上往下移动

  1. package com.qfedu.test2mysql;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. import java.sql.ResultSet;
  5. import java.sql.Statement;
  6. /**
  7. * @author shkstart
  8. * @create 2022-04-26-14:35
  9. */
  10. public class Demo4 {
  11. public static void main(String[] args) throws Exception {
  12. Class.forName("com.mysql.jdbc.Driver");
  13. String url = "jdbc:mysql://localhost:3306/java2204?useSSL=false";
  14. String user = "root";
  15. String paw = "123456";
  16. Connection connection = DriverManager.getConnection(url,user,paw);
  17. Statement statement = connection.createStatement();
  18. ResultSet resultSet = statement.executeQuery("select * from work");
  19. // System.out.println(resultSet);
  20. while(resultSet.next()){
  21. //获取数据
  22. //getInt(String columnLable) 传字段名字
  23. //getInt(int columnIndex) 传字段所在第几列
  24. int id = resultSet.getInt(1);
  25. System.out.print(id + "\t");
  26. String name = resultSet.getString("name");
  27. System.out.print(name + "\t");
  28. int age = resultSet.getInt("age");
  29. System.out.print(age + "\t");
  30. String info = resultSet.getString("info");
  31. System.out.println(info);
  32. System.out.println();
  33. }
  34. resultSet.close();
  35. statement.close();
  36. connection.close();
  37. }
  38. }

改进

要把数据赋值给对象,然后把对象存到list集合中,供别人使用

1.新建一个实体类,一张表对应着一个实体类,属性名字对应这成员属性

2.将其放在list集合里

  1. package com.qfedu.test2mysql;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. import java.sql.ResultSet;
  5. import java.sql.Statement;
  6. import java.util.ArrayList;
  7. import java.util.List;
  8. /**
  9. * @author wodexinhuai
  10. * @create 2022-04-26-15:26
  11. */
  12. public class Demo5anli {
  13. public static void main(String[] args) throws Exception {
  14. Class.forName("com.mysql.jdbc.Driver");
  15. String url = "jdbc:mysql://localhost:3306/java2204?useSSL=false";
  16. String user = "root";
  17. String paw = "123456";
  18. //获取连接对象
  19. Connection connection = DriverManager.getConnection(url,user,paw);
  20. //获取搬运工
  21. Statement statement = connection.createStatement();
  22. List<Work> list = new ArrayList<Work>();//空的集合 把数据库中的内容放到集合中
  23. ResultSet resultSet = statement.executeQuery("select * from work");
  24. while (resultSet.next()){
  25. int id = resultSet.getInt("id");
  26. String name = resultSet.getString("name");
  27. int age = resultSet.getInt("age");
  28. String info = resultSet.getString("info");
  29. Work work = new Work(id, name, age, info);
  30. // System.out.println(work);
  31. list.add(work);
  32. }
  33. for (Work w1: list
  34. ) {
  35. System.out.println(w1);
  36. }
  37. }
  38. }

1.5扩展

没有main函数可以执行java程序吗

@Test

但后导入 add’jUnit5.8.1’ to classpath

只能用无参无返回值的方法

  1. @Test
  2. public void test(){
  3. System.out.println("卧槽?");
  4. }