发布作者: Charlotte
百度收录: 正在检测是否收录...
作品采用: 《 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 》许可协议授权
JDBC(Java Database Connectivity)是一个独立于特定数据库管理系统、特定网络和特定硬件平台的接口,用于执行SQL语句。以下是使用JDBC的基本步骤:
要与数据库建立连接,首先需要注册数据库的驱动。这一步是告诉Java应用程序要连接的数据库类型。
try{
// 加载数据库驱动类
//DriverManager.registerDriver(new Driver())这一步在驱动4+版本已不是必须的
//驱动版本8+:com.mysql.cj.jdbc.Driver
//驱动版本5+:com.mysql.jdbc.Driver
forName("com.mysql.cj.jdbc.Driver") ;
} catch (ClassNotFoundException e) {
e. printStackTrace();
}
这里以MySQL为例,com.mysql.jdbc.Driver
是MySQL的驱动类名称。
注册驱动后,下一步是使用DriverManager
获取数据库连接。
String url = "jdbc:mysql://localhost:3306/数据库名?useSSL=false" ;
String username = "用户名" ;
String password = "密码" ;
try{
Connection conn = DriverManager.getConnection (url, username, password) ;
} catch (SQLException e){
e. printStackTrace();
}
网址
是数据库的URL,其中包含数据库的地址、端口号和数据库名。用户名
和密码
分别是数据库登录的用户名和密码。
有了数据库连接后,需要创建一个用于发送SQL语句的对象。
try (Connection conn = DriverManager.getConnection ( url ,username,password) ) {
Statement stmt = conn.createStatement() ;
} catch (SQLException e){
e.printStackTrace();
}
Statement
对象用于执行静态SQL语句并返回其生成的结果。
通过Statement
对象发送SQL语句结果,并接收查询。
String sql = "SELECT * FROM 表名" ;
try (Connection conn = DriverManager.getConnection (url ,username,password) ;
Statement stmt = conn.createStatement()){
ResultSet rs = stmt.executeQuery(sql) ;
// 处理结果集
} catch (SQLException e){
e.printStackTrace();
}
获取到结果集后,可以搜索结果集获取数据。
try (Connection conn = DriverManager.getConnection (url ,username,password) ;
Statement stmt = conn.createStatement( ) ;
ResultSet rs = stmt.executeQuery(sql)){
while (rs.next()){
// 通过列名或列索引获取数据
String data = rs.getString("列名");
// 处理数据
}
} catch (SQLException e) {
e.printStackTrace();
}
最后,确保打开的数据库资源被关闭,避免内存泄漏。
try (Connection conn = DriverManager.getConnection (url ,username,password) ;
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql)){
// 使用资源
// 手动关闭
//rs.close();
//stmt.close();
//conn.close()
} catch ( SQLException e ) {
e.printStackTrace();
}
// 自动关闭资源,因为使用了try-with-resources语句
使用try-with-resources语句可以自动关闭资源,这是Java 7及以上版本提供的功能,可以自动管理资源的关闭。
以下是 JDBC 中 Statement 接口常用的方法及其功能的详细解释:
方法 | 描述 |
---|---|
execute(String sql) | 在数据库中执行给定的 SQL 语句,可以是任何类型的 SQL 语句(例如,SELECT、INSERT、UPDATE、DELETE),返回一个 boolean 值,指示第一个结果是一个 ResultSet 对象还是更新计数或没有结果。 |
executeQuery(String sql) | 在数据库中执行给定的 SELECT 语句,返回一个 ResultSet 对象,它包含满足查询条件的结果集。 |
executeUpdate(String sql) | 在数据库中执行给定的 INSERT、UPDATE 或 DELETE 语句,或者是 SQL 数据定义语言(DDL)语句,例如 CREATE TABLE、ALTER TABLE、DROP TABLE 等。返回一个整数,表示受影响的行数。 |
addBatch(String sql) | 将 SQL 语句添加到批处理中,以便一次性执行多个 SQL 语句。 |
clearBatch() | 清除当前的批处理命令列表。 |
executeBatch() | 执行当前的批处理中的所有 SQL 语句。 |
close() | 关闭该 Statement 对象。 |
getResultSet() | 获取当前结果集(如果有)。 |
getUpdateCount() | 获取受上一条 SQL 语句影响的行数。 |
getMoreResults() | 将当前结果集关闭,并将游标移动到下一个结果集(如果有)。 |
getGeneratedKeys() | 获取由数据库自动生成的键,如果上一条 SQL 语句执行的是插入语句,并且指定了自动生成键的字段,则返回包含生成键的 ResultSet 对象。 |
setFetchSize(int rows) | 设置获取的行数。 |
setMaxRows(int max) | 设置最大的结果集行数限制。 |
setQueryTimeout(int seconds) | 设置查询的超时时间(以秒为单位)。 |
getFetchSize() | 获取获取的行数。 |
getMaxRows() | 获取结果集的最大行数限制。 |
getQueryTimeout() | 获取查询的超时时间(以秒为单位)。 |
—— 评论区 ——