Java 如何使用JDBC将数据更新到数据库

Java 如何使用JDBC将数据更新到数据库,java,jdbc,Java,Jdbc,尝试将数据更新到数据库我无法更新,sql查询正在执行,但数据未更新到数据库。根据您的代码片段,您的代码尝试更新数据库,但间接陷入了不必要的过程。下面是我的更正,假设数据库中的表(注册)由结构-->emailId(varchar 10)、password(varchar 8)组成 假设您需要更新“注册”,当包含emailID=“gmail001”时,您将为每一行将密码设置为“myPassword”。用于更新的SQL语句是updateregistrationsetpassword=“myPasswo

尝试将数据更新到数据库我无法更新,sql查询正在执行,但数据未更新到数据库。

根据您的代码片段,您的代码尝试更新数据库,但间接陷入了不必要的过程。下面是我的更正,假设数据库中的表(注册)由结构-->emailId(varchar 10)、password(varchar 8)组成

假设您需要更新“注册”,当包含emailID=“gmail001”时,您将为每一行将密码设置为“myPassword”。用于更新的SQL语句是
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()
not
executeQuery()
。您在电子邮件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();
} 
}