-1

こんにちは、例を開発しました。これは私のコードです:

public class GetMonthFromDate {
  public int data() {
    int count=0;
    java.sql.Timestamp timeStamp = new Timestamp(System.currentTimeMillis());
    java.sql.Date date = new java.sql.Date(timeStamp.getTime()); 

    //count++;

    try {
      Class.forName("com.mysql.jdbc.Driver");
      Connection con =
        DriverManager.getConnection("jdbc:mysql://localhost:3306/xcart-432pro",
                                    "root", "");

      PreparedStatement statement =
        con.prepareStatement("select * from xcart_order_status_history where date_time='date'");
      ResultSet result = statement.executeQuery();
      while (result.next()) {
        // Do something with the row returned.
        count++; //if the first col is a count.
      }
    } catch(Exception exc) {
      System.out.println(exc.getMessage());
    }

    return count;
  }
}

上記のコードではうまくいきません。

ここで私はこのコードを使用しています

java.sql.Timestamp timeStamp = new Timestamp(System.currentTimeMillis());
java.sql.Date date = new java.sql.Date(timeStamp.getTime()); 

出力のみを与えることを意味します2012-08-08。したがって、コードで日付を呼び出すだけです。しかし、それは私にとってはうまくいきません.displayedはカウント値を返します0. o 間違っています。2正しいだけ。一致したクエリにはデータベースに2つの値があるためです。

select * from xcart_order_status_history where date_time='date'
4

4 に答える 4

0

準備済みステートメントに日付値を設定していません。

于 2012-08-08T07:03:02.943 に答える
0
public class GetMonthFromDate {
    public int data() {
        ...
        java.sql.Timestamp timeStamp = new Timestamp(System.currentTimeMillis());
        ...
        PreparedStatement statement = con.prepareStatement("select * from xcart_order_status_history where date_time=?");
        statement.setTimestamp(1,timeStamp);
        ...

        return count;
    }
}
于 2012-08-08T07:06:58.927 に答える
0

試す:

PreparedStatement statement = con.prepareStatement("select * from xcart_order_status_history where date_time=?");
statement.setDate(1, date);

また、カウントのみが必要な場合は、select * を実行しないでください。select count(*) を使用する必要があります

于 2012-08-08T07:05:23.077 に答える
0

PreparedStatement の使用法は完全に間違っています。

変数名を渡さず、プレースホルダーを渡してから、それらの値を明示的に渡します。

PreparedStatement statement =
    con.prepareStatement("select * from xcart_order_status_history where date_time=?");
statement.setDate(1, date);
ResultSet result = statement.executeQuery();

また、ステートメント内に引用符を挿入することはありません。?データ型の調整は、JDBC ドライバーによって処理されます。

JDBC チュートリアルを読み直してください。いくつかの基本的な概念を見逃しているようです: http://docs.oracle.com/javase/tutorial/jdbc/index.html

于 2012-08-08T07:06:11.523 に答える