0

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

附言。我不需要时间只需要日期

        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();
4

3 回答 3

2

有时您的设备 DateTime 格式不适合 DB ,使用以下 DateTime 格式总是被 DB 接受。

替换传递日期参数如下:

cmd.Parameters.AddWithValue("@PaidDate", dateNow.ToString("yyyyMMdd"));
于 2013-07-10T08:45:02.187 回答
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();
于 2013-07-09T17:12:18.310 回答
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 值,这将是当前系统日期。

于 2013-07-09T17:43:20.523 回答