Connection conn = null; Statement stmt = null; PreparedStatement ps=null; try{ // 注册 JDBC 驱动 Class.forName(JDBC_DRIVER); // 打开链接 //连接数据库 conn = DriverManager.getConnection(DB_URL,USER,PASS); // 执行查询 //实例化Statement对象 stmt = conn.createStatement(); String sql; sql="UPDATE login SET password=? WHERE id=?";//向login表里修改数据 //注:几个问号几个ps.setString,上面的语句中有两个?,所以下面有两个ps.setString ps=conn.prepareStatement(sql);//修改数据预处理 ps.setString(1, "222222");//第1个问号的值"222222" ps.setString(2, "123");//第2个问号的值"123" ps.executeUpdate();//执行修改数据 // 完成后关闭 ps.close(); stmt.close(); conn.close(); }catch(SQLException se){ // 处理 JDBC 错误 se.printStackTrace(); }catch(Exception e){ // 处理 Class.forName 错误 e.printStackTrace(); }finally{ // 关闭资源 try{ if(stmt!=null) stmt.close(); }catch(SQLException se2){ }// 什么都不做 try{ if(conn!=null) conn.close(); }catch(SQLException se){ se.printStackTrace(); } } System.out.println("数据修改成功"); 请把这段代码修改成确定第一个问号的值和第二个问号的值与login表里的数据相同后再修改第一个问号的值
时间: 2024-02-10 20:06:06 浏览: 92
Windowssever 2016 连sqlsever的jar包 JDK1.7/1.8 sqljdbc41/sqljdbc42
为了确定第一个问号的值和第二个问号的值与login表里的数据相同,我们需要先查询login表里的数据,然后再将查询结果作为参数赋值给ps对象。修改后的代码如下:
```
Connection conn = null;
Statement stmt = null;
PreparedStatement ps=null;
try {
// 注册 JDBC 驱动
Class.forName(JDBC_DRIVER);
// 打开链接
conn = DriverManager.getConnection(DB_URL,USER,PASS);
// 查询数据
String querySql = "SELECT * FROM login WHERE id=?";
ps = conn.prepareStatement(querySql);
ps.setString(1, "123"); // 设置id为123的查询条件
ResultSet rs = ps.executeQuery();
String password = "";
if(rs.next()) {
password = rs.getString("password"); // 获取查询结果中的password值
}
rs.close();
ps.close();
// 修改数据
String updateSql = "UPDATE login SET password=? WHERE id=?";
ps = conn.prepareStatement(updateSql);
ps.setString(1, password); // 设置第一个问号的值为查询结果中的password值
ps.setString(2, "123"); // 设置第二个问号的值为123
ps.executeUpdate(); // 执行修改数据
// 完成后关闭
ps.close();
conn.close();
} catch(SQLException se){
// 处理 JDBC 错误
se.printStackTrace();
} catch(Exception e){
// 处理 Class.forName 错误
e.printStackTrace();
} finally{
// 关闭资源
try{
if(stmt!=null) stmt.close();
} catch(SQLException se2){
// 什么都不做
}
try{
if(conn!=null) conn.close();
} catch(SQLException se){
se.printStackTrace();
}
}
System.out.println("数据修改成功");
```
修改后的代码先执行查询语句获取login表中id为123的记录中的password值,然后将该值作为第一个问号的值,再将123作为第二个问号的值进行数据修改。
阅读全文