From 4b157639d86b0231b366a2cb98b692269a3ea1eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B7=AF=E7=8E=B2?= <1516489926@qq.com> Date: Wed, 17 May 2023 23:48:09 +0800 Subject: [PATCH 1/2] =?UTF-8?q?JDBC=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20230516 JDBC\344\275\234\344\270\232.md" | 217 ++++++++++++++++++ 1 file changed, 217 insertions(+) create mode 100644 "29 \350\267\257\347\216\262/20230516 JDBC\344\275\234\344\270\232.md" diff --git "a/29 \350\267\257\347\216\262/20230516 JDBC\344\275\234\344\270\232.md" "b/29 \350\267\257\347\216\262/20230516 JDBC\344\275\234\344\270\232.md" new file mode 100644 index 0000000..7e86280 --- /dev/null +++ "b/29 \350\267\257\347\216\262/20230516 JDBC\344\275\234\344\270\232.md" @@ -0,0 +1,217 @@ +# JDBC作业: + + + +1. MySQL中创建一个数据库student_db + +2. 库中创建student表 + +3. 表中数据如下 + +4. | 编号 | 姓名 | 性别 | + | ---- | ---- | ---- | + | 1 | 张三 | 男 | + | 2 | 李四 | 女 | + | 3 | 王五 | 男 | + +5. 编写java 4个类,分别实现以下功能 + + 1. 查询功能,查询student中所有数据 + 2. 添加功能 + 3. 修改功能 + 4. 删除功能 + +6. 扩展题【预习题】 + + 1. 能否实现一个类中,用四个方法来实现上面4个类的功能 + 2. 能否实现将查询的结果,封装成java对象 + +查询语句 + +```java +import java.sql.*; + +public class Test { + public static void main(String[] args) { + Connection conn =null; + Statement sta = null; + ResultSet result =null; + try { + //第一步 导包 + //第二步 加载MYSQL 驱动类 + Class.forName("com.mysql.jdbc.Driver"); + //创建连接 + conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student_db?useSSL=false&characterEncoding=utf8","root","root");//后面跟数据库的名字 + //编写SQL的语句 + String sql ="select * from student";//dql//注意这里查询的是表,所以写的是表名 + //获取执行SQL的对象 + sta = conn.createStatement(); + //sta执行SQL + result = sta.executeQuery(sql); + //处理返回结果 + while (result.next()){ + int id = result.getInt("id"); + String name= result.getString("name"); + String sex = result.getString("sex"); + System.out.println("ID是"+id+":姓名是:"+name+";性别是:"+sex); + } + + } catch (ClassNotFoundException e) { + System.out.println("驱动包没有正确导入,请检查!"); + } catch (SQLException e) { + System.out.println("SQL语句执行错误!"); + e.printStackTrace();//显示错误 + }finally{ + //释放资源 + try {//注意倒着来 + if (result != null) { + result.close(); + } + if (sta != null) { + sta.close(); + } + if (conn != null) { + conn.close(); + } + } catch (SQLException e) { + System.out.println("资源释放异常!"); + } + + } + } +} +``` + +删除语句 + +```java +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.sql.Statement; + +public class Test3 { + public static void main(String[] args) { + //删除语句 + try { + //第二步 加载MYSQL 驱动类 + Class.forName("com.mysql.jdbc.Driver"); + // 2.创建连接 + Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student_db?useSSL=false&characterEncoding=utf8","root","root");//后面跟数据库的名字 + //3.编写SQL的语句 + String sql ="delete from student where name="张三";//dql//注意这里查询的是表,所以写的是表名 + //4. 获取执行SQL的对象 + Statement statement = conn.createStatement(); + //5.执行语句 + int i = statement.executeUpdate(sql); + //6.返回结果 + if (i >0) { + System.out.println("删除成功!"); + }else { + System.out.println("删除失败!"); + } + //7.释放资源 + statement.close(); + conn.close(); + } catch (ClassNotFoundException e) { + System.out.println("驱动包没有正确导入,请检查!"); + } catch (SQLException e) { + System.out.println("SQL语句执行错误!"); + e.printStackTrace(); + } + } +} +``` + +修改语句 + +```java +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.sql.Statement; + +public class Test4 { + public static void main(String[] args) { + //修改语句 + Connection conn =null; + Statement sta = null; + try { + Class.forName("com.mysql.jdbc.Driver"); + //创建连接 + conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student_db?useSSL=false&characterEncoding=utf8","root","root");//后面跟数据库的名字 + //编写SQL的语句 + String sql ="update student set name='李四' where id =2";//dql//注意这里查询的是表,所以写的是表名 + //获取执行SQL的对象 + sta = conn.createStatement(); + //sta执行SQL + int i = sta.executeQuery(sql); + //处理返回结果 + if (i >0) { + System.out.println("修改成功"+i+"行!"); + }else { + System.out.println("修改失败!"); + } + + + } catch (ClassNotFoundException e) { + System.out.println("驱动包没有正确导入,请检查!"); + } catch (SQLException e) { + System.out.println("SQL语句执行错误!"); + e.printStackTrace();//显示错误 + }finally{ + //释放资源 + try{ + sta.close(); + conn.close(); + } + catch (SQLException e) { + System.out.println("SQL语句执行错误!"); + e.printStackTrace();//显示错误 + } + +``` + +插入语句 + +```java +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.sql.Statement; + +public class Test2 { + public static void main(String[] args) { + try { + //添加语句 + //第二步 加载MYSQL 驱动类 + Class.forName("com.mysql.jdbc.Driver"); + // 2.创建连接 + Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student_db?useSSL=false&characterEncoding=utf8","root","root");//后面跟数据库的名字 + //3.编写SQL的语句 + String sql ="insert into student value(4,'罗云熙','男')";//dql//注意这里查询的是表,所以写的是表名 + //4. 获取执行SQL的对象 + Statement statement = conn.createStatement(); + //5.执行语句 + int i = statement.executeUpdate(sql); + //6.处理返回值 + if (i >0) { + System.out.println("插入成功!"); + }else{ + System.out.println("插入失败"); + } + //7.释放资源 + statement.close(); + conn.close(); + } catch (ClassNotFoundException e) { + System.out.println("驱动包没有正确导入,请检查!"); + } catch (SQLException e) { + System.out.println("SQL语句执行错误!"); + e.printStackTrace();//显示错误 + } + + + } +} +``` + -- Gitee From cce0f3c5927c77c244c7173495cb1d502371628c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B7=AF=E7=8E=B2?= <1516489926@qq.com> Date: Mon, 22 May 2023 22:47:05 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E7=AC=AC=E4=BA=8C=E6=AC=A1=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...01\350\243\205\351\233\206\345\220\210.md" | 143 ++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 "29 \350\267\257\347\216\262/20230518 \345\260\201\350\243\205\351\233\206\345\220\210.md" diff --git "a/29 \350\267\257\347\216\262/20230518 \345\260\201\350\243\205\351\233\206\345\220\210.md" "b/29 \350\267\257\347\216\262/20230518 \345\260\201\350\243\205\351\233\206\345\220\210.md" new file mode 100644 index 0000000..dc640f6 --- /dev/null +++ "b/29 \350\267\257\347\216\262/20230518 \345\260\201\350\243\205\351\233\206\345\220\210.md" @@ -0,0 +1,143 @@ +## mysql + +```java +create database jdsp charset utf8; +use jdsp; +create table student02( + `id` int(11), + `name` varchar(4), + `sex` varchar(1) +); +INSERT INTO `student` VALUES (1, '老大', '男'); +INSERT INTO `student` VALUES (2, '老二', '女'); +INSERT INTO `student` VALUES (3, '老三', '男'); +``` + +## 工具类 + +```java +import java.net.ConnectException; +import java.sql.*; + +public class DBUtil { + // 数据库的主机名,端口号,数据库名,关闭SSL,采用Unicode字符集,并以Utf8为编码 + //封装 + private static final String url = "jdbc:mysql:///jdsp?useSSL=false&useUnicode=true&characterEncoding=utf8"; + private static final String user = "root";//用户名 + private static final String password = "root";//密码 + // 1.注册驱动 +static {//如果没有写static,则无法提示一些单词和使用ctrl+alt+t,所以要先写static + try { + Class.forName("com.mysql.jdbc.Driver"); + } catch (ClassNotFoundException e) { + System.out.println("驱动注册异常"); + e.printStackTrace();//检查异常 + } + } + // 2.获取连接对象 + public static Connection getConn() { + Connection conn = null; + try { + conn = DriverManager.getConnection(url, user, password); + } catch (SQLException e) { + System.out.println("获取连接对象失败"); + e.printStackTrace();//检查异常 + } + return conn; + } + + + // 一个通用查询方法,接收SQL语句,返回结果集 + public static ResultSet query(String sql, String... keys) { + // String sql = "update student set id=? , name =? , sex =? where id=?"; + // 形参前加... 就表示其是可变参数,就是数组 + // 获取连接对象 + ResultSet rs = null; + Connection conn = getConn(); + try { + + // 建立预编译SQL的对象 + PreparedStatement pst = conn.prepareStatement(sql);// 将?号转成变量 + // 给每个变量赋值 + // 遍历可变参数 + for (int i = 0; i < keys.length; i++) { + pst.setString((i + 1), keys[i]); + } + // 执行SQL + rs = pst.executeQuery(); + } catch (SQLException e) { + System.out.println("执行查询异常"); + e.printStackTrace();//检查异常 + } + return rs; + } + + // ,一个通用更新的方法(删除,添加,修改), + public static int update(String sql, String... keys) { + // String sql = "update student set id=? , name =? , sex =? where id=?"; + // 形参前加... 就表示其是可变参数,就是数组 + // 获取连接对象 + int num = 0; + Connection conn = getConn(); + try { + + // 建立预编译SQL的对象 + PreparedStatement pst = conn.prepareStatement(sql);// 将?号转成变量 + // 给每个变量赋值 + // 遍历可变参数 + for (int i = 0; i < keys.length; i++) { + pst.setString((i + 1), keys[i]); + } + // 执行SQL + num = pst.executeUpdate(); + } catch (SQLException e) { + System.out.println("执行查询异常"); + e.printStackTrace();//检查异常 + } + + return num; + } + +} +``` + +## 测试类 + +```java +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; + +public class Test { + public static void main(String[] args) { + //调用方法 + Connection conn =DBUtil.getConn(); + //集合 + ArrayList list=new ArrayList<>(); + //查询语句 + String sql="select * from student"; + // 建立预编译SQL的对象,调用方法 + ResultSet re=DBUtil. query(sql); + Student stu=new Student(); + try { + while (re.next()){ + int id= re.getInt(1); + String name=re.getString(2); + String sex= re.getString(3); + stu.setId(id); + stu.setName(name); + stu.setSex(sex); + list.add(stu); + } + } catch (SQLException e) { + System.out.println("执行查询异常"); + e.printStackTrace();//检查异常 + } + System.out.println(list); + + } +} + +``` + -- Gitee