-3
int  i =Db.getStatement().executeUpdate("insert into famous_place 
  values(img_id_seq.nextval,'"+name+"','"+
  location+"','"+dist+"','"+about+"','"+
  status+"','"+path+"',"+id+")");

idは にlongあり、他のすべては にありstringます。どこに問題があり、Java の SQL に対して次のメッセージが表示される理由がわかりません。

missing comma exception
4

2 に答える 2

8

SQL を実行する現在の方法を停止します。読みにくく、変換の問題が発生する可能性があり、最も重要なのはSQL インジェクション攻撃に対して脆弱です。問題は、値の1つに'、SQL内でその引用された値を効果的に終了させる が含まれていることだと思います。

代わりに、次を使用しますPreparedStatement

String sql = 
   "insert into famous_place values(img_id_sq.nextval, ?, ?, ?, ?, ?, ?, ?)";
PreparedStatement statement = db.prepareStatement(sql);

statement.setString(1, name);
statement.setString(2, location);
statement.setString(3, dist);
statement.setString(4, about);
statement.setString(5, status);
statement.setString(6, path);
statement.setInt(7, id);

int rows = statement.executeUpdate();

(そして、適切なtry/finallyブロックを使用して、ステートメント、接続などを閉じます)

于 2013-05-05T06:27:25.287 に答える