1

これについてあらゆる種類のことを試してみましたが、これに関する助けをいただければ幸いです。

基本的に、いくつかのデータを保存したいSQLデータベースがあります。他のすべてのフィールドでこれを行う方法を知っていますが、このデータで現在の時刻も保存したいと考えています。

str = "INSERT INTO tblResults (username, curTime, outcome) " +
"VALUES(" + "'" + user + "'" +", " + (new Timestamp(date.getTime())) + ", " + "'" +     outcome + "'" +")";

次に、文字列を実行します。これは、多くの試行の 1 つの例であり、この試行はコンパイルされますが、エラーが発生します。

'16' 付近の構文が正しくありません。結果の保存中にエラーが発生しました

現在の時間は16時です...タイムスタンプが日付の前に時間を置き、SQLがその逆を行うためだと思いますが、これを修正する方法がわからないので、助けていただければ幸いです。ありがとう

4

4 に答える 4

2

a を使用するPreparedStatementと、次のように並べ替えられます。

    final String str = "INSERT INTO tblResults (username, curTime, outcome)  VALUES( ?, ?, ?)";
    final PreparedStatement preparedStatement = connection.prepareStatement(str);
    preparedStatement.setString(1, user);
    preparedStatement.setTimestamp(2, new Timestamp(date.getTime()));
    preparedStatement.setString(3, outcome);

私はあなたの他のデータ型を推測しました...
他の人が言ったように、の使用はStatementお勧めしません。

于 2013-02-20T16:29:22.137 に答える
0

SQLクエリで新しいTimestamp()の周りのアポストロフィを見逃していますが、この場合は、代わりにPreparedStatementを使用する必要があります。

于 2013-02-20T16:27:16.070 に答える
0
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
Date date = new Date();
str = "INSERT INTO tblResults (username, curTime, outcome) " +
"VALUES(" + "'" + user + "'" +", " + dateFormat.format(date) + ", " + "'"  +     outcome + "'" +")";
于 2013-02-20T16:25:53.530 に答える
0

new Timestamp(date.getTime()) の参照値が正しいタイムスタンプ形式の文字列ではなく文字列に入るため、エラーが発生しています。

これに置き換えてから実行してください: str = "INSERT INTO tblResults (username, curTime, results) " + "VALUES(" + "'" + user + "'" +", " + (new Timestamp(date.getTime() ).toString() + ", " + "'" + 結果 + "'" +")";

toString() メソッドを配置しない場合、オブジェクトの参照アドレスが文字列に入ります。

ロガーの文字列全体を出力して、実際に str に何が入っているかを確認することもできます

于 2013-02-20T16:24:48.117 に答える