目录:
1 什么是JDBC
2 JDBC主要接口
3 JDBC编程步骤【学渣版本】
5 JDBC编程步骤【学神版本】
6 JDBC编程步骤【学霸版本】
1 什么是JDBC
JDBC是JAVA提供的一套标准连接数据库的接口,规定了连接数据库的步骤和功能;不同的数据库提供商提供了一套JDBC实现类,他们称为数据库驱动。
2 JDBC的主要接口
Connection 与数据库连接有关
DriverManager 与创建数据库连接对象有关
Statement 与执行SQL语句有关
ResultSet 与返回的结果及有关
注意:通过JDBC操作数据库是自动提交的,当然也可是设置成手动提交
3 利用JDBC操作数据库的步骤【学渣版本】
3.1 导入数据库驱动
Class.forName(“数据库驱动包”);
注意:Class.forName的底层实际上是利用的java反射机制
例如:Class.forName("com.mysql.jdbc.Driver"); //mysql驱动包的固定写法
3.2 创建连接
Connection conn = DriverManager.getConnection(“jdbc:mysql:// + IP + : + 端口 + / + 数据库名称”,“数据库用户名”,“密码”);
注意:DriverManager是一个驱动管理类,通过调用该类的静态方法DriverManager来创建连接对象
例如: Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/test", // jdbc:mysql:// + IP + : + 端口 + / + 数据库名称
"root", // 用户名
"182838"); // 用户密码
3.3 创建语句对象
Statement state = conn.createStatement();
注意:利用连接对象来创建语句对象
3.4 执行SQL语句
ResultSet executeQuery(String sql)
用来执行查询语句(DQL)的方法,返回的是一个查询结果集
Integer executUpdate(String sql)
用来执行DML语句的方法,返回值为执行了该DML后影响了数据库中多少条数据
boolean execute(String sql)
可以执行所有类型的SQL语句,但是DQL,DML都有专门的方法,所以该方法通常
用来执行DDL语句.当返回值为true时表示该SQL语句执行后有结果集,没有结果集
的都是返回的false.(并不是根据语句的对错来返回true或者false)
注意:利用语句对象来执行SQL语句,DQL指查询,DML指修改、删除、插入,DDL指新建
注意:如果是查询语句会得到一个结果集,结果集类型是ResultSet,可对结果集进行遍历
3.5 遍历结果集
3.6 关闭语句对象、关闭连接对象
执行对象.close();
连接对象.close();
1
2 4.0.0
3 cn.xiangxu
4 testJDBC
5 0.0.1-SNAPSHOT
6
7
8 mysql
9 mysql-connector-java
10 5.1.37
11
12
13 junit
14 junit
15 4.12
16
17
18
maven依赖包
1 CREATE TABLE user (2 id INT (10) PRIMARY KEY,3 name VARCHAR (10),4 pwd VARCHAR (10)5 );6
7 DESC USER;8
9 DROP TABLE user;10
11 SELECT * FROM user;
SQL语句
1 packagetestJDBC;2
3 importjava.sql.Connection;4 importjava.sql.DriverManager;5 importjava.sql.ResultSet;6 importjava.sql.SQLException;7 importjava.sql.Statement;8
9 importorg.junit.Test;10
11 public classTestCase {12 @Test13 public voidtest01() {14 Connection conn = null;15 try{16 //01 导入驱动模块
17 Class.forName("com.mysql.jdbc.Driver");18
19 //02 初始化连接对象(以为在之前就创建了,进行初始化就行啦)
20 conn =DriverManager.getConnection(21 "jdbc:mysql://localhost:3306/test", "root", "182838");22
23 //03 创建执行对象
24 Statement state =conn.createStatement();25
26 String sql = "SELECT * FROM user ";27
28 //04 执行SQL语句
29 ResultSet rs = state.executeQuery(sql); //查询结果的类型为ResultSet30
31 //05 遍历查询结果
32 while(rs.next()) { //遍历结果集
33 System.out.println(rs.getString("name"));34 }35
36 //06 关闭执行对象、连接对象
37 state.close();38 conn.close();39
40 } catch(ClassNotFoundException e) {41 //TODO Auto-generated catch block
42 e.printStackTrace();43 } catch(SQLException e) {44 //TODO Auto-generated catch block
45 e.printStackTrace();46 } finally{47 if(null != conn) { //判断连接是否关闭
48 try{49 conn.close();50 } catch(SQLException e) {51 //TODO Auto-generated catch block
52 e.printStackTrace();53 }54 }55 }56
57 }58 }
java代码
4 存在的问题
4.1 重复编译问题
利用 Statement对象执行SQL语句时每执行一条SQL语句