0

データベースに現在の時刻を設定したい

私の列は「日時」形式です

私の挿入SQLは次のとおりです。

// Set last login
DateTime date = DateTime.Now;
string insertSQLDet = "INSERT INTO [dbo].[user] (last_login) VALUES (" + date + ") WHERE user_id=" + user_id;

しかし、「WHERE」の近くで間違っているというエラーが表示されます。誰が何が悪いのか見ることができますか?

4

5 に答える 5

2

私の推測!last_loginフィールドを更新したいので、UPDATEステートメントを使用し、常にパラメーターを使用してください。

DateTime date = DateTime.Now;
string sql = "UPDATE [dbo].[user] SET last_login=@date WHERE user_id=@userid";
using(SqlCommand cmd=new SqlCommand(sql,conn))
  {
    cmd.Parameters.Add("@date",SqlDbType.DateTime).Value=date;
    cmd.Parameters.Add("@userid",SqlDbType.VarChar,20).Vaule=user_id;
    conn.Open();
    cmd.ExecuteNonQuery();
    conn.Close();
   }
于 2012-06-20T05:08:57.937 に答える
1

INSERT何も選択していないため、ステートメントは述語を許可しません。UPDATE声明を出すつもりだったの?

"UPDATE [dbo].[user] SET last_login = " + date + " WHERE user_id = " + user_id

また、パラメータを使用して値を指定することを強くお勧めします。

于 2012-06-20T05:07:00.873 に答える
1

どの RDBMS を使用していますか? MSSQL または MySQL? サーバーの日時を取得する場合は、パラメーターに渡す必要はありません。サーバーの日時を自動的に取得する関数があります。

MSSQL の場合は ServerDate として GetDate() を選択します MySQL の場合は ServerDate として TIMESTAMP を選択します

于 2012-06-20T05:19:15.687 に答える
0

他のテーブルから行を選択していません。この状況でwhere句を使用できない理由を手動で指定しています。

更新しようとしている場合は、次のクエリが機能します。

"UPDATE [dbo].[user] SET last_login = " + date + " WHERE user_id = " + user_id
于 2012-06-20T05:24:21.417 に答える
0

datetime をパラメーターとして渡す必要はありません。insert ステートメント内のサーバーで選択するだけです。また、パラメーター化されたクエリを使用してパラメーターをバインドします。

string qry="INSERT INTO [dbo].[user] (last_login) VALUES  ((SELECT CURRENT_TIMESTAMP)) WHERE user_id=@userId"
于 2012-06-20T06:42:10.250 に答える