一、JDBC
1.1JDBC的概述
JDBD: Java Database Connectivity
使用java代码去连接数据库
JDK:
java.sql.*javax.sql.*
JDK提供了很多类库让咱们去操作数据库
需要第三方的jar包,jdk只负责增删改查的操作,不负责连上数据库
第三方jar包:mysql-connector-java.jar
如何下载第三方jar包:
1.百度:[http://mvnrepository.com](http://mvnrepository.com)2.搜索mysql3.选择MySQL Connector/J4.选择一个版本,点击Files下载
1.2连接数据库需要那些参数
mysql -hlocalhost -uroot -p123456
1.需要知道连接哪一款数据库 mysql
2.数据库的服务器的地址 localhost 本机地址
3.数据库的用户名 root
4.数据库的密码 123456
1.3借助JDBC连接数据库
1.在当前工程中导入第三方jar包
1.1在src下新建一个lib的文件夹1.2将jar包粘贴到lib文件夹下1.3点击jar包,右键 add
package com.qfedu.test1;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;/*** @author shkstart* @create 2022-04-26-10:29*/public class Demo1 {public static void main(String[] args) throws ClassNotFoundException, SQLException {//1.加载驱动//forName 方法的参数 包名+类名 编译期间会将整个类加载//Driver 这个类会被加载 就是驱动//Driver 这个类部在jdk里面 需要导包jarClass.forName("com.mysql.jdbc.Driver");//2.准备一个url url是连接数据库的String url = "jdbc:mysql://localhost:3306/java2204?useSSL=false";//3.准备用户名和密码String user = "root";String password = "123456";//4.使用驱动管理器类去获取连接数据库对象/*** getConnection(String url,String user,String password)* 尝试建立与给定数据库url的连接,连上一个数据库的一个方法* 返回值 Connection 是个接口 是一个连接对象**/Connection connection = DriverManager.getConnection(url, user, password);//打印以下connectionSystem.out.println(connection);connection.close();}}
1.4JDBC的增删改查
数据库已经连接上了,接下来开始对数据库下面的表进行增删改查
1.4.1增 executeUpdate
package com.qfedu.test2mysql;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;/*** @author shkstart* @create 2022-04-26-11:17*/public class Demo1 {public static void main(String[] args) throws ClassNotFoundException, SQLException {Class.forName("com.mysql.jdbc.Driver");String url = "jdbc:mysql://localhost:3306/java2204?useSSL=false";String user = "root";String password = "123456";Connection connection = DriverManager.getConnection(url, user, password);//Statement对象 可以将sql语句发送到数据库进行执行Statement statement = connection.createStatement();//再写sql语句是一定要有这个表int i = statement.executeUpdate("insert into work(id,name,age) value(1,'博儿',18);");System.out.println(i);//需要手动关闭一些资源statement.close();connection.close();}}
1.4.2删 executeUpdate
package com.qfedu.test2mysql;import java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;/*** @author shkstart* @create 2022-04-26-11:37*/public class Demo2 {public static void main(String[] args) throws Exception {Class.forName("com.mysql.jdbc.Driver");String url = "jdbc:mysql://localhost:3306/java2204?useSSL=false";Connection connection = DriverManager.getConnection(url, "root", "123456");Statement statement = connection.createStatement();int i = statement.executeUpdate("delete from work where id = 1");System.out.println(i);statement.close();connection.close();}}
注:防警告,加时区
String url = "jdbc:mysql://localhost:3306/java2204?useSSL=false&serverTimezone=Asia/Shanghai";
1.4.3改 executeUpdate
package com.qfedu.test2mysql;import java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;/*** @author shkstart* @create 2022-04-26-14:22*/public class Demo3update {public static void main(String[] args) throws Exception {Class.forName("com.mysql.jdbc.Driver");String url = "jdbc:mysql://localhost:3306/java2204?useSSL=false";String user = "root";String paw = "123456";Connection connection = DriverManager.getConnection(url, user, paw);Statement statement = connection.createStatement();int i = statement.executeUpdate("update work set id = 1 where id = 4");System.out.println(i);int i1 = statement.executeUpdate("update work set id = 2,name = '杨博是条狗'where id = 5");System.out.println(i1);statement.close();connection.close();}}
1.4.4查 executeQuery
光标从上往下移动
package com.qfedu.test2mysql;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;/*** @author shkstart* @create 2022-04-26-14:35*/public class Demo4 {public static void main(String[] args) throws Exception {Class.forName("com.mysql.jdbc.Driver");String url = "jdbc:mysql://localhost:3306/java2204?useSSL=false";String user = "root";String paw = "123456";Connection connection = DriverManager.getConnection(url,user,paw);Statement statement = connection.createStatement();ResultSet resultSet = statement.executeQuery("select * from work");// System.out.println(resultSet);while(resultSet.next()){//获取数据//getInt(String columnLable) 传字段名字//getInt(int columnIndex) 传字段所在第几列int id = resultSet.getInt(1);System.out.print(id + "\t");String name = resultSet.getString("name");System.out.print(name + "\t");int age = resultSet.getInt("age");System.out.print(age + "\t");String info = resultSet.getString("info");System.out.println(info);System.out.println();}resultSet.close();statement.close();connection.close();}}
改进
要把数据赋值给对象,然后把对象存到list集合中,供别人使用
1.新建一个实体类,一张表对应着一个实体类,属性名字对应这成员属性
2.将其放在list集合里
package com.qfedu.test2mysql;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;import java.util.ArrayList;import java.util.List;/*** @author wodexinhuai* @create 2022-04-26-15:26*/public class Demo5anli {public static void main(String[] args) throws Exception {Class.forName("com.mysql.jdbc.Driver");String url = "jdbc:mysql://localhost:3306/java2204?useSSL=false";String user = "root";String paw = "123456";//获取连接对象Connection connection = DriverManager.getConnection(url,user,paw);//获取搬运工Statement statement = connection.createStatement();List<Work> list = new ArrayList<Work>();//空的集合 把数据库中的内容放到集合中ResultSet resultSet = statement.executeQuery("select * from work");while (resultSet.next()){int id = resultSet.getInt("id");String name = resultSet.getString("name");int age = resultSet.getInt("age");String info = resultSet.getString("info");Work work = new Work(id, name, age, info);// System.out.println(work);list.add(work);}for (Work w1: list) {System.out.println(w1);}}}
1.5扩展
没有main函数可以执行java程序吗
但后导入 add’jUnit5.8.1’ to classpath
只能用无参无返回值的方法
@Testpublic void test(){System.out.println("卧槽?");}
