本文概述
JavaWeb学习笔记之JDBC
JDBC
概念
- Java Database Connectivity Java数据库连接,Java语言操作数据库。
- 定义一套操作所有关系型数据库的接口
步骤
导入驱动jar包
注册驱动
Class.forName(“com.mysql.Driver”);
获取数据库的连接对象Connection
Connection conn = DriverManager.getConnection(“jbdc:mysql://localhost:3306/数据库名称”,”root”,”password”);
定义sql
String sql = “”;
获取执行sql语句的对象Statement
Statement stmt = conn.createStatement();
执行sql,接收返回的结果
int count = stmt.executeUpdate(sql); // 根据操作需求
处理结果
释放资源
stmt.close();
conn.close();
详解各个对象
DriverManager驱动管理对象
注册驱动
static void registerDirver(Dirver driver): 注册给定的驱动程序DriverManager
写代码用Class.forName(“com.mysql.Driver”);
mysql5之后的驱动jar包可以省略注册驱动的步骤
获取数据库连接
方法:static Connection getConnection(String url, String user, String password)
参数: url: 指定连接的路径 : jbdc:mysql://ip地址:端口号/数据库名称
user/password:用户名和密码
Connection数据库连接对象
- 获取执行sql的对象
- Statement createStatement();
- PreparedStatement prepareStatement(String sql)
- 管理事务
- 开启事务: void setAutoCommit(boolean autoCommit): 调用该方法设置参数为false,即开启事务
- 提交事务: void commit()
- 回滚事务: rollback()
- 获取执行sql的对象
Statement执行sql对象
- 执行sql
- boolean execute(String sql): 可以执行任意的sql
- int executeUpdate(String sql): 执行DML(insert, update, delete)语句,DDL(create,alter,drop)语句
- ResultSet executeQuery(String sql): 执行DQL(Select)语句
- 执行sql
ResultSet结果集对象
next(): 游标向下移动一行
getXxx(): 获取数据
Xxx:代表数据类型
参数:
- int: 代表列的编号,编号从1开始
- String:列名称
- 使用步骤
- 游标向下移动一行
- 判断是否有数据
- 获取数据
PrepareStatement执行sql对象
抽取JDBC工具类:
配置文件
jdbc.properties url= user= password=
代码实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69public class JDBCUtils {
private static String url;
private static String user;
private static String password;
private static String driver;
/**
* 文件的读取,只需要读取一次即可拿到这些值。使用静态代码块
*/
static{
//读取资源文件,获取值。
try {
//1. 创建Properties集合类。
Properties pro = new Properties();
//获取src路径下的文件的方式--->ClassLoader 类加载器
ClassLoader classLoader = JDBCUtils.class.getClassLoader();
URL res = classLoader.getResource("jdbc.properties");
String path = res.getPath();
System.out.println(path);///D:/IdeaProjects/itcast/out/production/day04_jdbc/jdbc.properties
//2. 加载文件
// pro.load(new FileReader("D:\\IdeaProjects\\itcast\\day04_jdbc\\src\\jdbc.properties"));
pro.load(new FileReader(path));
//3. 获取数据,赋值
url = pro.getProperty("url");
user = pro.getProperty("user");
password = pro.getProperty("password");
driver = pro.getProperty("driver");
//4. 注册驱动
Class.forName(driver);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
/**
* 获取连接
* @return 连接对象
*/
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(url, user, password);
}
/**
* 释放资源
* @param stmt
* @param conn
*/
public static void close(Statement stmt,Connection conn){
if( stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if( conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}