2

私はprepareStatement()データを更新するために使用します。いくつかの列を更新する必要があるため、次のような1つの手順を記述しました。

public boolean editSocre(String field, String newValue) 
{
... 

   updateSql = "update score set ? = ? where emp_id = ?";
   pstmt3 = conn.prepareStatement(updateSql);
   pstmt3.setString(1, field);
   pstmt3.setString(2, newValue);
   pstmt3.setString(3, userid);                 
   int row = pstmt3.executeUpdate();
   if (row <= 0) 
   {
      return result;
   }

...

}

java.sql.SQLException:ORA-01747:user.table.column、table.column、または列の指定が無効です

変更方法、ありがとう!

4

2 に答える 2

3
public boolean editSocre(String field, String newValue) {

... 

updateSql = "update score set "+field+" = ? where emp_id = ?";

pstmt3 = conn.prepareStatement(updateSql);

pstmt3.setString(1, newValue);

pstmt3.setString(2, userid);          

int row = pstmt3.executeUpdate();

if (row <= 0) {

  return result;

}

..。

于 2012-05-28T03:35:53.307 に答える
0

他の回答/コメントがすでに述べているように、これはPreparedStatementでは不可能です。更新する行が本当に動的である必要がある場合は、更新可能な結果セットを使用できます。

PreparedStatement stmt = connection.prepareStatement("SELECT * FROM score WHERE emp_id = ?", ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE);
stmt.setString(1, userId);
ResultSet rs = stmt.executeQuery();
if (rs.next()) { // or maybe while rs.next()
    rs.updateString(field, newValue);
    rs.updateRow();
}
于 2012-05-28T13:19:26.033 に答える