主要内容1. JDBC作用2. 使用JDBC完成CRUD操作3. Statement和PreparedStatement4. 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命令发送器Statement4:通过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的添加操作
玩麻将的乐趣有时不在输赢,而在会做大牌,乐趣在做大牌的魄力。许多人一味地追求和牌,不管牌有多么好以和为主,或许会赢,但总不会大赢。和满贯就是好几个“棒棒”(就一番),或者说叫做“吃不够输得够”。而有魄力把牌做大者,或许一副牌就可以深深地体会出麻将的乐趣。 我来告诉你吧,一般麻雀九是用白板和筒子玩的,白板代表公仔(即是代表十点)一对白板最大其余对按顺序九筒到一筒排列,不同对的将两个牌相加所得点数,也是九点最大,零点最小,起过十点的减去十(比如一个九筒加一个二筒代表是一点)相同庄家赢已赞过已踩过收起IamYuese2011-02-20 |