0

私は2時間以上これを正しくしようとしてきたので、どんな助けも大歓迎です

  public void setAppointment(int studentID, DateTime appt)
    {
        connection.Open();

        string sqlStatement3 = "UPDATE dbo.students SET appointmentDate = '" + appt.Date.ToString("yyyy-MM-dd HH:mm:ss") + "' WHERE ID = " + studentID + ";";

        OleDbCommand updateCommand = new OleDbCommand(sqlStatement3, connection);            
        updateCommand.ExecuteNonQuery();

        connection.Close();
    }

したがって、基本的には、日時をSQLサーバーテーブルに挿入し、地域設定が邪魔にならないように、月と日の同じ形式を維持します。

唯一の問題は、時刻が 00:00:00 のままであることです。コードをデバッグしても、「appt」は 28/06/2013 09:30:00 を示します

4

4 に答える 4

10

以下で試してください

 public void setAppointment(int studentID, DateTime appt)
        {
            connection.Open();

            string sqlStatement3 = "UPDATE dbo.students SET appointmentDate = ? WHERE ID = ?";

            OleDbCommand updateCommand = new OleDbCommand(sqlStatement3, connection);
            updateCommand.Parameters.AddWithValue("@p1", appt);
            updateCommand.Parameters.AddWithValue("@p2", studentID);
            updateCommand.ExecuteNonQuery();

            connection.Close();
        }

しかし!

あなたはそれがSQLサーバーだと言いますが、なぜ使用するのOleDbCommandですか?

SQLサーバーの場合は以下を試してください

public void setAppointment(int studentID, DateTime appt)
{
    using (SqlConnection con = new SqlConnection(connectionString))
    using (SqlCommand cmd = con.CreateCommand())
    {
        cmd.CommandText = "UPDATE dbo.students SET appointmentDate = @appointmentDate WHERE ID = @ID";
        con.Open();
        cmd.Parameters.AddWithValue("@appointmentDate", appt);
        cmd.Parameters.AddWithValue("@ID", studentID);
        cmd.ExecuteNonQuery();
    }
}
于 2013-06-09T19:31:41.853 に答える
0

遅すぎる、しかしあなたの質問のために:以下のコードを試してください。

public void setAppointment(int studentID, DateTime appt)
        {

connection.Open();

    string sqlStatement3 = "UPDATE dbo.students SET appointmentDate = '" + "CONVERT(datetime, '" + appt.Date.ToString("yyyy-MM-dd HH:mm:ss")  + "', 103)" + "' WHERE ID = " + studentID + ";";

    OleDbCommand updateCommand = new OleDbCommand(sqlStatement3, connection);            
    updateCommand.ExecuteNonQuery();

    connection.Close();
}
于 2015-08-14T08:19:46.250 に答える
0

行 5. 変更

...  appt.Date.ToString(...

... appt.ToString(...
于 2013-06-09T19:30:48.217 に答える
0

以前の投稿の問題が解決されたことを願っています。SQL ステートメントをパラメーターと共に使用することに同意します。

アプリケーションの日付と時刻の形式が固定されている場合、ハードコーディングしても害はありませんが、web.config ファイルから日付と時刻の形式を取得するコードは適切です。これにより、コードがプロジェクト全体で同じ一貫性を持つようになります。

それ以外の

ToString("yyyy-MM-dd HH:mm:ss")

ToString(構成値)

于 2013-06-09T21:04:21.130 に答える