**重点内容**1、课程名称:JDBC
2、知识点
2.1、本次预计讲解的知识点
1、 JDBC的基本概念及分类
2、 使用JDBC进行数据库表的操作
3、 Statement、PreparedStatement、ResultSet接口的使用
4、 事务处理的概念及应用
7、 DAO
3、具体内容
3.1、JDBC简介(了解)
JDBC:Java Database Connection,表示数据库连接,是java中专门提供的一组用于操作数据库的标准,所有的数据库生产商如果要是想为java提供支持,则必须支持此标准,既然是标准的话,所以说JDBC实际上是一套类库的接口。
主要的操作类和接口:Connection接口、Statement接口、PreapredStatement接口、ResultSet接口、DriverManager类
JDBC的主要分类:
1、 JDBC-ODBC桥连接:使用微软的ODBC进行数据库的连接,JDBC ODBC DB,因为中间加入了一个ODBC的过渡,所以这样的操作性能将是非常低的。所以,只要是开发就不会有人使用此方式。但是此种方式是SUN本身提供的最原始连接,所以所有的操作类库都是最新的。
2、 JDBC连接,直接使用各个数据库生产商提供的数据库连接程序,进行数据库操作,JDBC DB,这样的性能较高,所以在开发中基本上都使用此种形式。
3、 JDBC网络连接,在正常操作中,不可能每一台电脑上都安装一个数据库。通过网络连接不同主机的数据库,此操作也将由各个数据库生产商提供支持。
3.2、JDBC操作前的准备(理解)
现在要使用JDBC连接Oracle数据库,需要经过以下两个步骤。
3.2.1、建立Person表
下面建立一张Person表。
No. 字段名称 字段类型 描述
1 pid NUMBER 编号,使用序列进行自动增长操作
2 name VARCHAR2(50) 姓名
3 sex VARCHAR2(2) 性别
4 birthday DATE 生日
5 salary NUMBER(7,2) 工资,小数表示
通过以上的表结构,写出数据库的创建脚本:
DROP SEQUENCE myseq ;
DROP TABLE person ;
CREATE SEQUENCE myseq ;
CREATE TABLE person(
pid NUMBER PRIMARY KEY NOT NULL ,
name VARCHAR2(20) NOT NULL ,
sex VARCHAR2(2) NOT NULL ,
birthday DATE ,
salary NUMBER(7,2)
) ;
3.3、连接数据库(重点)
如果要想连接数据库,则必须要有以下的几种信息:
1、 数据库的驱动程序地址:jdbc:mysql://localhost:3306
2、 数据库的连接地址:mysql://localhost:3306/test
3、 用户名:root
4、 密码:root
但是,还需要以下的几个类支持:
1、 Class类,通过Class类加载驱动程序
2、 DriverManager类,通过DriverManager管理驱动,并可以取得连接,连接时需要地址、用户名、密码
3、 连接通过Connection进行接收
范例:进行数据库的连接操作
package org.vince.jdbcdemo01;
import java.sql.Connection;
import java.sql.DriverManager;
public class ConnectionDemo01 {
public static final String DBDRIVER = "com.mysql.jdbc.Driver";
public static final String DBURL = "mysql://localhost:3306/test";
public static final String DBUSER = "root";
public static final String DBPASS = "root";
public static void main(String[] args) throws Exception {
Connection conn = null; // 用于接收数据库连接
// 1、加载数据库驱动程序
Class.forName(DBDRIVER);
// 2、数据库连接
conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS); // 数据库连接
System.out.println(conn);
// 3、关闭
conn.close();
}
}
3.4、使用Statement接口进行数据库的更新操作(重点)
如果要想进行数据库的操作的话,则必须使用Statement接口,那么,如果要执行的是更新操作,则使用Statement接口中的以下方法:
No. 方法名称 类型 描述
1 int[] executeBatch() throws SQLException 普通 批处理操作
2 int executeUpdate(String sql) throws SQLException 普通 执行数据库的更新操作,返回更新的行数
如果要想为Statement接口实例化,则就需要使用Connection接口的如下方法:
No. 方法名称 类型 描述
1 Statement createStatement() throws SQLException 普通 取得Statement实例
3.4.1、执行数据插入操作
如果要想执行插入操作,则必须编写插入的SQL语法,SQL语法格式:“INSERT INTO 表名称(列,..) VALUES (值,..)”
范例:执行插入
package org.vince.jdbcdemo02;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class StatementInsertDemo01 {
public static final String DBDRIVER = "com.mysql.jdbc.Driver";
public static final String DBURL = "mysql://localhost:3306/test";
public static final String DBUSER = "root";
public static final String DBPASS = "root";
public static void main(String[] args) throws Exception {
Connection conn = null; // 用于接收数据库连接
Statement stmt = null; // 数据库操作
String sql = "INSERT INTO person(pid,name,sex,birthday,salary) "
+ "VALUES (1,'张三','男',now(),899)";
// 1、加载数据库驱动程序
Class.forName(DBDRIVER);
// 2、数据库连接
conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS); // 数据库连接
stmt = conn.createStatement(); // 取得Statement实例
stmt.executeUpdate(sql); // 执行SQL语句
// 3、关闭
stmt.close();
conn.close();
}
}
3.4.2、执行数据更新操作
使用UPDATE语法就可以完成数据库的更新操作:UPDATE 表名称 SET 列=值,… WHERE 更新条件
package org.vince.jdbcdemo02;
import java.sql.Connection;
import java.sql.DriverManager;
import