1

以下の sql insert ステートメントを実行しようとしましたが、以下にリストされているエラーが発生しました。アドバイスをいただければ幸いです、ありがとう。

 public void addSale(String saleDetails, String saleTotal) 
                        throws ClassNotFoundException, SQLException {

     Statement myStatement = getConnection();
     String sql = "INSERT INTO Sale (SaleDetails, SaleTotal) VALUES ('"+saleDetails+"','"+saleTotal+"')";

     myStatement.executeUpdate(sql);
     closeConnection();
  } 
}

エラー:

Java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] クエリ値の数と宛先フィールドが同じではありません。sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6956) で sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7113) で sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3109) で) sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:337) で sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(JdbcOdbcStatement.java:287) で

ms-access のデザイン ビューは次のとおりです。

ここに画像の説明を入力

4

3 に答える 3

1

System.out.println(sql);ロギング フレームワークを実行または使用して、そのステートメントをアクセス内で直接試してください。odbc を介したさまざまなデータ型で問題が発生する可能性があります。それ以外の場合、ステートメントは私にとっては問題ないようです。

おそらく、変数に'and/or コンマが含まれています。それらがエスケープされていない場合にも、問題が発生する可能性があります。パラメーター バインディングの使用を検討する必要があります。

于 2012-11-10T21:47:07.343 に答える
0

あなたの挿入は次のようになるべきだと思います:

String sql = "INSERT INTO Sale (SaleDetails, SaleTotal) VALUES (" + saleDetails + ", " + saleTotal + ")";

また、挿入を行う前に、saleTotal を文字列から数値に変換する必要がある場合もあります。

于 2012-11-10T21:57:21.790 に答える