- JDBC 教程
- JDBC - 首页
- JDBC - 简介
- JDBC - SQL 语法
- JDBC - 环境配置
- JDBC - 示例代码
- JDBC - 驱动程序类型
- JDBC - 连接
- JDBC - 语句
- JDBC - 结果集
- JDBC - 数据类型
- JDBC - 事务
- JDBC - 异常处理
- JDBC - 批量处理
- JDBC - 存储过程
- JDBC - 流式数据
- JDBC - RowSet
- JDBC - 复制数据库
- JDBC - ACID 属性
- JDBC - 连接池
- JDBC 示例
- JDBC - 创建数据库
- JDBC - 选择数据库
- JDBC - 删除数据库
- JDBC - 创建表
- JDBC - 删除表
- JDBC - 插入记录
- JDBC - 查询记录
- JDBC - 更新记录
- JDBC - 删除记录
- JDBC - WHERE 子句
- JDBC - LIKE 子句
- JDBC - 数据排序
- JDBC 有用资源
- JDBC - 常见问题解答
- JDBC - 快速指南
- JDBC - 有用资源
- JDBC - 讨论
- 有用 - Java 教程
JDBC - 预处理语句对象示例
以下示例演示了如何使用 PreparedStatement 以及打开和关闭语句:
此示例代码基于前面章节中完成的环境和数据库设置。
使用 PreparedStatement 更新整数值示例
在这个例子中,我们有五个静态字符串,包含数据库连接 URL、用户名、密码、SELECT 查询和 UPDATE 查询。UPDATE 查询中包含年龄和 ID 的占位符,这些占位符将由 PreparedStatement 填充。现在,使用 DriverManager.getConnection() 方法,我们准备了一个数据库连接。连接准备就绪后,我们使用 connection.prepareStatement() 方法创建了一个 PreparedStatement 对象。现在,使用 setInt() 方法,我们相应地设置了年龄和 ID 的占位符值。
使用 statement.executeUpdate(),我们运行了更新查询,修改的行数存储在 rows 变量中。最后,使用 statement.executeQuery() 执行 SELECT 查询并将结果存储在结果集中。现在迭代结果集并打印每条记录以检查更新后的内容。
将以下示例复制并粘贴到 JDBCPreparedStatementExample.java 中,编译并运行如下:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class JDBCPreparedStatementExample {
static final String DB_URL = "jdbc:mysql:///TUTORIALSPOINT";
static final String USER = "guest";
static final String PASS = "guest123";
static final String QUERY = "SELECT id, first, last, age FROM Employees";
static final String UPDATE_QUERY = "UPDATE Employees set age=? WHERE id=?";
public static void main(String[] args) {
// Open a connection
try(Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
PreparedStatement stmt = conn.prepareStatement(UPDATE_QUERY);
) {
// Bind values into the parameters.
stmt.setInt(1, 35); // This would set age
stmt.setInt(2, 102); // This would set ID
// Let us update age of the record with ID = 102;
int rows = stmt.executeUpdate();
System.out.println("Rows impacted : " + rows );
// Let us select all the records and display them.
ResultSet rs = stmt.executeQuery(QUERY);
// Extract data from result set
while (rs.next()) {
// Retrieve by column name
System.out.print("ID: " + rs.getInt("id"));
System.out.print(", Age: " + rs.getInt("age"));
System.out.print(", First: " + rs.getString("first"));
System.out.println(", Last: " + rs.getString("last"));
}
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
输出
现在,我们按如下方式编译上述示例:
C:\>javac JDBCPreparedStatementExample.java C:\>
运行 **JDBCPreparedStatementExample** 时,会产生以下结果:
C:\>java JDBCPreparedStatementExample Return value is : false Rows impacted : 1 ID: 100, Age: 18, First: Zara, Last: Ali ID: 101, Age: 25, First: Mehnaz, Last: Fatma ID: 102, Age: 35, First: Zaid, Last: Khan ID: 103, Age: 30, First: Sumit, Last: Mittal C:\>
使用 PreparedStatement 更新字符串值示例
在这个例子中,我们有五个静态字符串,包含数据库连接 URL、用户名、密码、SELECT 查询和 UPDATE 查询。UPDATE 查询中包含部门和 ID 的占位符,这些占位符将由 PreparedStatement 填充。现在,使用 DriverManager.getConnection() 方法,我们准备了一个数据库连接。连接准备就绪后,我们使用 connection.prepareStatement() 方法创建了一个 PreparedStatement 对象。现在,使用 setString() 方法设置部门的占位符值,并使用 setInt() 方法设置 ID。
使用 statement.executeUpdate(),我们运行了更新查询,修改的行数存储在 rows 变量中。最后,使用 statement.executeQuery() 执行 SELECT 查询并将结果存储在结果集中。现在迭代结果集并打印每条记录以检查更新后的内容。
将以下示例复制并粘贴到 JDBCPreparedStatementExample.java 中,编译并运行如下:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class JDBCPreparedStatementExample {
static final String DB_URL = "jdbc:mysql:///TUTORIALSPOINT";
static final String USER = "guest";
static final String PASS = "guest123";
static final String QUERY = "SELECT StudentID, LastName, FirstName, Dept FROM Students";
static final String UPDATE_QUERY = "UPDATE Students set Dept=? WHERE studentid=?";
public static void main(String[] args) {
try{
// Open a connection
Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
PreparedStatement pstmt = conn.prepareStatement(UPDATE_QUERY);
// Bind values into the parameters.
pstmt.setString(1, "Mathematics");
pstmt.setInt(2, 1000);
// Updating Dept of the record with StudentID = 1000
int rows = pstmt.executeUpdate();
System.out.println("Rows impacted : " + rows );
// Let us select all the records and display them.
ResultSet rs = pstmt.executeQuery(QUERY);
// Extract data from result set
while (rs.next()) {
// Retrieve by column name
System.out.print("ID: " + rs.getInt("StudentID"));
System.out.print(", LastName: " + rs.getString("LastName"));
System.out.print(", FirstName: " + rs.getString("FirstName"));
System.out.println(", Dept: " + rs.getString("Dept"));
}
rs.close();
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
输出
现在,我们按如下方式编译上述示例:
C:\>javac JDBCPreparedStatementExample.java C:\>
运行 **JDBCPreparedStatementExample** 时,会产生以下结果:
C:\>java JDBCPreparedStatementExample Rows impacted : 1 ID: 1000, LastName: Agarwal, FirstName: Bonny, Dept: Mathematics ID: 1001, LastName: Pandey, FirstName: Amit, Dept: Physics ID: 1002, LastName: Kumar, FirstName: Shefali, Dept: English ID: 1004, LastName: Ali, FirstName: Mohammed, Dept: Mathematics ID: 1005, LastName: Kumar, FirstName: Kishore, Dept: Biology C:\>