Java 如何使用JDBC将数据更新到数据库
尝试将数据更新到数据库我无法更新,sql查询正在执行,但数据未更新到数据库。根据您的代码片段,您的代码尝试更新数据库,但间接陷入了不必要的过程。下面是我的更正,假设数据库中的表(注册)由结构-->emailId(varchar 10)、password(varchar 8)组成 假设您需要更新“注册”,当包含emailID=“gmail001”时,您将为每一行将密码设置为“myPassword”。用于更新的SQL语句是Java 如何使用JDBC将数据更新到数据库,java,jdbc,Java,Jdbc,尝试将数据更新到数据库我无法更新,sql查询正在执行,但数据未更新到数据库。根据您的代码片段,您的代码尝试更新数据库,但间接陷入了不必要的过程。下面是我的更正,假设数据库中的表(注册)由结构-->emailId(varchar 10)、password(varchar 8)组成 假设您需要更新“注册”,当包含emailID=“gmail001”时,您将为每一行将密码设置为“myPassword”。用于更新的SQL语句是updateregistrationsetpassword=“myPasswo
updateregistrationsetpassword=“myPassword”其中emailId=“gmail001”
回到您的代码,不要使用“Statement”类,您更喜欢使用“PreparedStatement”类预配置SQL语句。以下是我的更正:
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con =
DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe",
"system", "9900479852");
Statement stmt =con.createStatement();
ResultSet rs = stmt.executeQuery("select *from registration where emailid='"+str+"' ");
// here im fetching the emailid from data base
while(rs.next()){
emailId = rs.getString("emailId");
mob = rs.getString("mobilenumber");
System.out.println(emailId);
//here we return update query`enter code here`
if(emailId.equals(str)){
stmt.executeQuery("update registration set password='"+s1+"'
where emailId='"+str+" '"); //query is executing but new vales are not updating to the data base
p.println("updated");
}
con.close();
}
有关更多信息,请访问oracle javaSE JDBC实现教程-->遵循jpa或JDBC教程-您的代码是开放式sql注入攻击。此外,我认为您需要为更新创建一个新的stmt,而不是重复使用。要运行更新,请使用
executeUpdate()
notexecuteQuery()
。您在电子邮件id后面添加了一个额外的空格。因此,如果s1
是abc,而str
是123,那么生成的SQL语句将是updateregistration set password='abc'where emailId='123'
。没有带尾随空格的记录,因此不会更新任何内容。(信不信由你,在哪里之前没有空间是可以的)。使用adityasrucitra建议的预先准备好的语句,您不必担心这一点。但是从cookie获取电子邮件id只需修改代码,将“keyEmailId”从cookie源更改为您的电子邮件id
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "system", "9900479852");
String sql = "UPDATE registration SET password=? WHERE emailID=?";
String newPassword = "myPassword";
String keyEmailId = "gmail001";
try{
PreparedStatement stat = con.prepareStatement(sql);
stat.setString(1, newPassword);
stat.setString(2, keyEmailId);
stat.executeUpdate();
}catch(SQLException ex){
ex.printStackTrace();
}
}