0
try
         {
            String sql="INSERT INTO `task`(`task`,`time`) VALUES(?,?)";
            PreparedStatement stmt=this.connection.prepareStatement(sql);
            stmt.setString(1, this.task);
            stmt.setInt(2, this.time);
            //stmt.
            Boolean res= stmt.execute(sql);
         }
         catch(Exception e)
         {
             System.err.println(e);
         }

エラー:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: SQL 構文にエラーがあります。1 行目の '?,?)' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

4

1 に答える 1

2

使用しないでください

stmt.execute(sql);

使用する

stmt.execute();

を実行しますPreparedStatement

使用している最初のものは、指定された文字列を実行しようとしますが、これは明らかに、その中のプレースホルダー値のために実行したいものではありません'?'(これはjava.sql.Statementインターフェイスのメソッドです)。

2 つ目は からのメソッドで、メソッドを通じて入力した値を使用してjava.sql.PreparedStatementを実行します。PreparedStatementsetXXX()


また、文字列に目盛りが必要ない場合は、次のように書くことができます

String sql="INSERT INTO task(task,time) VALUES(?,?)";
于 2013-03-15T07:32:11.087 に答える