将日期插入访问数据库

时间:2013-07-09 16:31:05

标签: c# ms-access

我在访问日期时遇到问题,在访问时数据类型是日期/时间(一般日期)。我希望它插入今天的日期,以便我可以稍后调用它并计算出已经过了多少天(我知道如何使用时间跨度)。那么请告诉我保存访问日期的正确方法。感谢名单

PS。我不需要时间只有日期

        DateTime dateNow = DateTime.Now;
        string connString = (@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=|DataDirectory|HorseDB.mdb");
        OleDbConnection conn = new OleDbConnection(connString);
        conn.Open();
        OleDbCommand cmd = conn.CreateCommand();
        OleDbCommand cmdSelect = conn.CreateCommand();
        cmd.CommandText = @"INSERT INTO [Users] (PaidDate) VALUES  (@PaidDate) WHERE [UserId] = @OrderId";
        cmd.Parameters.AddWithValue("@PaidDate", dateNow);
        cmd.Parameters.AddWithValue("@OrderId", orderId);
        cmd.ExecuteNonQuery();
        conn.Close();

3 个答案:

答案 0 :(得分:2)

有时您的设备DateTime格式不适合数据库,DB始终使用以下DateTime格式。

替换传递日期参数,如下所示:

cmd.Parameters.AddWithValue("@PaidDate", dateNow.ToString("yyyyMMdd"));

答案 1 :(得分:0)

我怀疑您正在寻找UPDATE而不是INSERT,如果您想要做的是使用当前日期更新UserID行:

cmd.CommandText = @"UPDATE [Users] SET PaidDate = @PaidDate WHERE [UserId] = @OrderId";
cmd.Parameters.AddWithValue("@PaidDate", dateNow);
cmd.Parameters.AddWithValue("@OrderId", orderId);
cmd.ExecuteNonQuery();

如果您实际上想要INSERT整个新行,则需要使用INSERT的正确语法:

cmd.CommandText = @"INSERT INTO [Users] (PaidDate, OrderID) VALUES (@PaidDate, @OrderId)";
cmd.Parameters.AddWithValue("@PaidDate", dateNow);
cmd.Parameters.AddWithValue("@OrderId", orderId);
cmd.ExecuteNonQuery();

答案 2 :(得分:0)

试试这个:

string connString = (@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=|DataDirectory|HorseDB.mdb");
        OleDbConnection conn = new OleDbConnection(connString);
        conn.Open();
        OleDbCommand cmd = conn.CreateCommand();
        OleDbCommand cmdSelect = conn.CreateCommand();
        cmd.CommandText = @"INSERT INTO [Users] (PaidDate) VALUES  (@PaidDate) WHERE [UserId] = @OrderId";
        cmd.Parameters.AddWithValue("@PaidDate", Date());
        cmd.Parameters.AddWithValue("@OrderId", orderId);
        cmd.ExecuteNonQuery();
        conn.Close();

因为您正在使用Jet连接字符串,所以它可以读取Date()的MSAccess值,该值将是当前系统日期。