2017-06-08 5 views
0

私が何をしたのか分かりませんが、SQLデータベースの情報を更新したいときにエラーが発生します。エラー:列の位置 '1'が範囲外です。あなたがPreparedStatementを使用しているので、このResultSetの列数が「0」カラムの位置が範囲外にあり、ResultSetが '0'

try 
{ 
    String em = EmailField.getText(); 
    String na = NameField.getText(); 
    String su = SurnameField.getText(); 
    String i = IDField.getText(); 
    String ce = CellField.getText(); 

    String query2 = "UPDATE LouwDataBase.Table1Test " 
        + "SET Email = "+"'"+em+"'"+" , " 
        + "Name = "+"'"+na+"'"+" , " 
        + "Surname = "+"'"+su+"'"+" , " 
        + "ID = "+"'"+i+"'"+" , " 
        + "Cell = "+"'"+ce+"'" 
        + " WHERE Email = "+"'"+UserEmailID+"'"; 

     conn = DriverManager.getConnection("jdbc:derby://localhost:1527/MyDataBase", "LouwDataBase", "1234"); 
     stat = conn.createStatement(); 

     try (Connection conn = this.connect(); 
     PreparedStatement pstmt = conn.prepareStatement(query2)) 
     { 
      pstmt.setString(1, em); 
      pstmt.setString(3, na); 
      pstmt.setString(4, su); 
      pstmt.setString(5, i); 
      pstmt.setString(6, ce); 
      pstmt.executeUpdate(); 
     } 
     catch (SQLException e) 
     { 
      System.out.println(e.getMessage()); 
     } 
} 
+2

クエリにはパラメータはありませんが、パラメータに値を設定しています。 –

+0

パラメータはどこに追加しますか? – Swiper

+0

https://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html –

答えて

1

で、私は、クエリに疑問符を持ち、その後pstmt.setString()を使用する必要があると思います。

try { 
    String em = EmailField.getText(); 
    String na = NameField.getText(); 
    String su = SurnameField.getText(); 
    String i = IDField.getText(); 
    String ce = CellField.getText(); 

    String query2 = "UPDATE LouwDataBase.Table1Test " 
       + "SET Email = ?, " 
       + "Name = ?, " 
       + "Surname = ?, " 
       + "ID = ?, " 
       + "Cell = ?" 
       + " WHERE Email = ?"; 

    conn = DriverManager.getConnection("jdbc:derby://localhost:1527/MyDataBase", "LouwDataBase", "1234"); 
    stat = conn.createStatement(); 

    try (Connection conn = this.connect(); 
    PreparedStatement pstmt = conn.prepareStatement(query2)) { 
     pstmt.setString(1, em); 
     pstmt.setString(3, na); 
     pstmt.setString(4, su); 
     pstmt.setString(5, i); 
     pstmt.setString(6, ce); 
     pstmt.executeUpdate(); 
    } 
    catch (SQLException e) { 
     System.out.println(e.getMessage()); 
    } 
} 
関連する問題