2017-08-25 12 views
-1
  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();  
      } 

データベースにデータを更新しようとしましたが、更新できませんでした.SQLクエリは実行中ですが、データはデータベースに更新されていません。JDBCを使用してデータベースにデータを更新する方法

+3

JPAやJDBCのチュートリアルに従ってください - あなたのコードは、オープンSQLインジェクション攻撃です。また、私は更新用の新しいstmtを作成し、再利用する必要はないと考えています。 –

+1

アップデートを実行するには、 'executeUpdate()'ではなくexecuteQuery()を使用してください –

+0

私はうんざりしています。うまくいきません。 – darshan

答えて

1

コードスニペットに基づいて、コードはデータベースを更新しようとしていますが、間接的に不要なプロセスに入ります。ここで私の訂正ですが、データベース内のテーブル(登録)が構造 - > emailId(varchar 10)、パスワード(varchar 8)で構成されているとしましょう。

「registration」を更新する必要があるとすると、各行にemailID = "gmail001"が含まれている場合は、パスワードを "myPassword"に設定します。更新するSQL文はUPDATE registration SET password = "myPassword" WHERE emailId="gmail001"

です。コードに戻って、 'Statement'クラスを使用する代わりに、事前設定済みのSQL文に 'PreparedStatement'クラスを使用することをお勧めします。ここに私の修正です:

詳細について
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(); 
} 
} 

JDBCの実装のためのオラクルのJava SEのチュートリアルをご覧ください - >https://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html

+0

メールアドレスはクッキーから取る – darshan

+0

あなたのクッキーソースからあなたのemailidに 'keyEmailId'を変更してコードを変更するだけです – adityasrucitra

関連する問題