JDBC
JDBC(Java Database Connectivity)是Java语言中用于定义与关系型数据库(如Oracle、MySQL、SQL Server等)进行交互的API。它提供了一种标准的方法,使得Java程序员可以在不同的关系型数据库上编写可移植的代码。
连接数据库
在使用JDBC连接数据库时,我们需要先引入相关的库文件。我们需要下载相应的JDBC驱动程序,如MySQL的驱动程序mysql-connector-java.jar,Oracle的驱动程序ojdbc.jar等。然后我们需要在程序中使用Class.forName()方法加载驱动程序,如下所示:
Class.forName("com.mysql.jdbc.Driver");
加载驱动程序后,我们就可以通过DriverManager.getConnection()方法来获取一个数据库连接,如下所示:
Connection conn = DriverManager.getConnection(url, username, password);
url是连接数据库的URL,username和password是连接数据库的用户名和密码。
执行SQL语句
连接上数据库后,我们就可以执行SQL语句了。JDBC提供了Statement、PreparedStatement和CallableStatement三种类型的Statement对象来执行SQL语句。
Statement对象用于执行静态SQL语句,如下所示:
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM users");
while (rs.next()) {
// 处理查询结果
}
PreparedStatement对象用于执行动态SQL语句,它可以预编译SQL语句,提高执行效率,如下所示:
PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM users WHERE id = ?");
pstmt.setInt(1, 1);
ResultSet rs = pstmt.executeQuery();
CallableStatement对象用于执行存储过程,如下所示:
CallableStatement cstmt = conn.prepareCall("{call myprocedure(?, ?)}");
cstmt.setString(1, "param1");
cstmt.setInt(2, 2);
ResultSet rs = cstmt.executeQuery();
事务处理
在数据库操作中,有些操作需要一次性执行多条SQL语句,如转账操作,需要先扣除一方的账户余额,再将钱转入另一方的账户余额中,如果其中一条SQL语句出错,整个操作将不会生效,为了保证数据的完整性,我们需要使用事务。
JDBC提供了Connection对象的setAutoCommit()方法来控制事务的提交和回滚,如下所示:
try {
conn.setAutoCommit(false);
stmt1.executeUpdate(sql1);
stmt2.executeUpdate(sql2);
conn.commit();
} catch (SQLException e) {
conn.rollback();
} finally {
conn.setAutoCommit(true);
setAutoCommit(false)表示关闭自动提交事务,conn.commit()表示提交事务,conn.rollback()表示回滚事务,最后需要将自动提交事务重新打开。
异常处理
在使用JDBC连接数据库时,我们需要对可能发生的异常进行处理,如连接数据库失败、执行SQL语句失败等。JDBC中的SQLException是最常见的异常类型,我们可以通过try-catch语句来处理它,如下所示:
Connection conn = DriverManager.getConnection(url, username, password);
// 执行SQL语句
conn.close();
e.printStackTrace();
网友留言(0)