1

私は .net と sql が初めてです。DateTime をデータベースに保存しようとしていますが、午前 11:21:57 に「'11' 付近の構文が正しくありません」という例外が発生します。コードを実行すると、時間にエラーが発生します。これは、データベースに格納するための私のコードです。以下のメソッドはクエリを返します。

    public string InsertADData(string strdateLogin, string strdateLogout, string strName, string strUsername)
    {
        DateTime dateLogin = Convert.ToDateTime(strdateLogin);
        DateTime dateLogout = Convert.ToDateTime(strdateLogout);
        return string.Format(@"INSERT INTO ADTimeData (LoginDate, LogoutDate,name,username) 
                               VALUES ({0},{1},'{2}','{3}')", dateLogin,
                                                            dateLogout,
                                                            strName.Replace("'", "''"),
                                                           strUsername.Replace("'", "''"));
    }

このメソッドは、レコードをデータベースに挿入するためのものです。ここで CheckDBConnection() は SQL 接続を開きます。

       public void InsertRecords(String strQuery)
        {
            CheckDBConnection();
            using (SqlCommand cmd = new SqlCommand())
            {
                cmd.Connection = _con;
                cmd.CommandText = strQuery;
                cmd.CommandType = CommandType.Text;
                cmd.ExecuteNonQuery();
            }
        }

私が書いたコードをデバッグすると、クエリ、つまりsqlQuery値を取得しています

      INSERT INTO ADTimeData (LoginDate, LogoutDate,name,username) 
                              VALUES (1/4/2013 11:21:57 AM,1/4/2013 11:21:57 AM,'raivnder','ravinder.g@gmail.com')

しかし、私は例外を取得しています

cmd.ExecuteNonQuery();

例外は下の画像に示されています。 ここに画像の説明を入力

私を助けてください。

4

3 に答える 3

2

要するに、問題は、insert ステートメントで渡す datetime 形式にあります。

パラメータ化されたクエリを使用して実行する必要があります。次のサンプル クエリに似たもの:

SqlCommand cmd = new SqlCommand("INSERT INTO <table> (<column>) VALUES (@value)", connection);
cmd.Parameters.AddWithValue("@value", dateTimeVariable);

cmd.ExecuteNonQuery();
于 2013-01-04T06:21:38.687 に答える
-1
public string InsertADData(string strdateLogin, string strdateLogout, string strName, string strUsername)
{
    DateTime dateLogin = Convert.ToDateTime(strdateLogin);
    DateTime dateLogout = Convert.ToDateTime(strdateLogout);
    return string.Format(@"INSERT INTO ADTimeData (LoginDate, LogoutDate,name,username) 
                           VALUES ('{0}','{1}','{2}','{3}')", dateLogin,
                                                        dateLogout,
                                                        strName.Replace("'", "''"),
                                                       strUsername.Replace("'", "''"));
}
于 2013-01-04T06:56:00.380 に答える