jdbc连接数据库是一种用于在Java应用程序中访问和操作数据库的技术。
如果你觉得我分享的内容或者我的努力对你有帮助,或者你只是想表达对我的支持和鼓励,请考虑给我点赞、评论、收藏。您的鼓励是我前进的动力,让我感到非常感激。
文章目录
1 jdbc操作数据库的基本步骤
JDBC连接数据库的基本步骤如下:
- 加载数据库驱动:使用Class.forName()加载特定数据库的JDBC驱动。
- 创建数据库连接:使用DriverManager.getConnection()方法建立连接。
- 创建Statement对象:通过连接对象创建Statement对象来执行SQL语句。
- 执行SQL语句:使用Statement对象执行SQL查询、更新等操作。
- 处理结果:如果是查询操作,处理结果集。
- 关闭资源:关闭结果集、Statement和连接对象,释放资源。
以下是一个简单的示例代码:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JdbcExample {
public static void main(String[] args) {
String jdbcUrl = "jdbc:mysql://localhost:3306/mydatabase";
String username = "root";
String password = "password";
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
// 加载数据库驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 建立数据库连接
conn = DriverManager.getConnection(jdbcUrl, username, password);
// 创建Statement对象
stmt = conn.createStatement();
// 执行SQL查询
String sql = "SELECT * FROM mytable";
rs = stmt.executeQuery(sql);
// 处理结果集
while (rs.next()) {
// 获取并处理数据
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭资源
}
}
}
2 jdbc事务操作
在JDBC中控制事务通常涉及以下步骤:
- 关闭自动提交:调用 Connection 对象的 setAutoCommit(false) 方法,禁用自动提交,开启事务控制。
- 执行数据库操作:使用 Connection 对象进行数据库操作,如 executeUpdate 或 executeQuery。
- 如果操作成功,调用 commit() 方法提交事务。如果操作过程中出现异常,捕获异常并调用 rollback() 方法回滚事务。
- 操作完成后,关闭 Connection 对象。
下面是一个简单的例子:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCTransactionExample {
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
// 加载并Register JDBC驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 建立连接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "user", "password");
// 关闭自动提交
conn.setAutoCommit(false);
// 创建Statement
stmt = conn.createStatement();
// 执行SQL更新
String sql1 = "UPDATE mytable SET age = age + 1 WHERE id = 1";
stmt.executeUpdate(sql1);
// 可以添加更多的SQL操作
// String sql2 = "INSERT INTO mytable (name, age) VALUES ('John', 25)";
// stmt.executeUpdate(sql2);
// 提交事务
conn.commit();
System.out.println("事务已提交");
} catch (ClassNotFoundException | SQLException e) {
try {
// 出现异常时回滚事务
if (conn != null) {
conn.rollback();
System.out.println("事务已回滚");
}
} catch (SQLException ex) {
ex.printStackTrace();
}
e.printStackTrace();
} finally {
// 关闭资源
try {
if (stmt != null) stmt.