JAVASE之四节课带你走入JDBC—1、JDBC概述
1. JDBC作用
2. 使用JDBC完成CRUD操作
3. Statement和PreparedStatement
4. JDBC事务操作
5. 案例:员工管理系统
学习目标
第一节 JDBC基本操作
1.1 JDBC概述什么是JDBC
JDBC(Java DataBase Connectivity, Java数据库连接) ,是一种用于执行SQL语句的Java API,为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成
有了JDBC,程序员只需用JDBC API写一个程序,就可访问所有数据库。
Sun公司、数据库厂商、程序员三方关系
SUN公司是规范制定者,制定了规范JDBC(连接数据库规范)
DriverManager类 作用:管理各种不同的JDBC驱动
Connection接口
Statement接口和PreparedStatement接口
ResultSet接口
数据库厂商微软、甲骨文等分别提供实现JDBC接口的驱动jar包
程序员学习JDBC规范来应用这些jar包里的类。
JDBC访问数据库步骤
1:加载一个Driver驱动
2:创建数据库连接(Connection)
3:创建SQL命令发送器Statement
4:通过Statement发送SQL命令并得到结果
5:处理结果(select语句)
6:关闭数据库资源ResultSet Statement Connection
创建模块/项目 导入jar包
1.2使用JDBC完成添加操作【示例1】添加一条部门dept数据package com.bjsxt.jdbcDemo1; import netscape.security.UserTarget; import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManager; import java.sql.Statement; public class Test1 { public static void main(String[] args) throws Exception { // 1:加载一个Driver驱动 /* 使用反射加载驱动 其实就是获得一个类的字节码, 在获得类的字节码的过程中,一定会加载类进入内存 一旦进入内存会执行代码中的静态代码块 一执行代码块,就会自动的向DriverManager中注册一个驱动 static { try { DriverManager.registerDriver(new Driver()); } catch (SQLException var1) { throw new RuntimeException("Can't register driver!"); } } mysql8 之前的数据库驱动名 com.mysql.jdbc.Driver mysql8 开始的数据库驱动名 com.mysql.cj.jdbc.Driver */ Class.forName("com.mysql.cj.jdbc.Driver"); //; ; ; ; // 向数据库发送语句 数据库执行完毕后 返回参数 // 返回对数据库中多少行代码产生了影响 int rows = statement.executeUpdate(sql); System.out.println("执行完毕,对数据中的"+rows+"行数据产生了影响"); // 5:处理结果(select语句 增删改语句没有此步骤) // 6:关闭数据库资源ResultSet(查询操作) Statement Connection statement.close(); conn.close(); } }【示例2】statement 批量添加user数据 1:加载一个Driver驱动 Class.forName("com.mysql.cj.jdbc.Driver"); // 2:创建数据库连接(Connection) String url = "jdbc:mysql://127.0.0.1:3306/mydb?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai"; String user = "root"; String password = "root"; Connection conn = DriverManager.getConnection(url, user, password); // 3:创建SQL命令发送器Statement Statement statement = conn.createStatement(); // 4:通过Statement发送SQL命令并得到结果 /* * 执行查询命令 executeQuery() * 执行增删改命令 executeUpdate() * 向dept中增加一条数据 * */ for (int i = 0; i < 20; i++) { statement.addBatch("insert into user (name,password)" + "','password==" + i + "')"); } int[] rowCounts = statement.executeBatch(); if (rowCounts.length > 0) { System.out.println("执行完毕,对数据中的" + rowCounts.length + "行数据产生了影响"); } // 5:处理结果(select语句 增删改语句没有此步骤) // 6:关闭数据库资源ResultSet(查询操作) Statement Connection statement.close(); conn.close(); }总结
MySQL8中数据库连接的四个参数有两个发生了变化
String driver = "com.mysql.cj.jdbc.Driver";
String url = "jdbc:mysql://127.0.0.1:3306/mydb?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai";
或者String url = ".......serverTimezone=GMT+8";
错误1:Exception in thread "main" java.lang.ClassNotFoundException: com.mysql.jdbc2.Driver
原因:没有添加jar包或者com.mysql.jdbc2.Driver路径错误
错误2:Exception in thread "main" java.sql.SQLException:
No suitable driver found for jbdc:mysql://127.0.0.1:3306/stumgr
原因:url错误
错误3:Exception in thread "main" java.sql.SQLException:
Access denied for user 'root'@'localhost' (using password: YES)
原因:用户名或者密码错误
错误4:Exception in thread "main" com.mysql.jdbc.exceptions
.jdbc4.MySQLIntegrityConstraintViolationException:Duplicate entry '90' for key 'PRIMARY'
原因:主键冲突
理解1: Class.forName("com.mysql.jdbc.Driver");的作用
第一次使用"com.mysql.jdbc.Driver",就会执行静态代码块,注册驱动
public class Driver extends NonRegisteringDriver implements java.sql.Driver { public Driver() throws SQLException { } static { try { DriverManager.registerDriver(new Driver()); } catch (SQLException var1) { throw new RuntimeException("Can't register driver!"); } } }理解2:注释了该语句 Class.forName("com.mysql.jdbc.Driver"); 为什么还可以正常运行?
jar--META-INF--services--java.sql.Driver--com.mysql.jdbc.Driver
会自动找到该内容并加载
本节需知1. JDBC的常用接口和类有哪些
2. 使用JDBC完成对部门表dept的添加操作
a想提高千术的技术的话,先要找到好点的视频资料学习,自己多加练习,最好是可以像,自我学习解密资料网,那种纯手法的视频教学资料,里面不紧有马洪刚这种名人的教学,其他出名的一些人物都有,我反正一直是觉得学千术就要学习纯手法的才行已赞过已踩过收起匿名用户2013-07-23
在百度一下牌技天堂里面有不少打麻将的技巧已赞过已踩过收起匿名用户2015-11-03博彩问答
上一篇:龙虎斗赌博 最近很少听说虚拟币交易所被盗币当年mtgox不就被偷了现在安全技术升级了吗 下一篇:在射频系统中RoHS代表啥意思