我在访问日期时遇到问题,在访问时数据类型是日期/时间(一般日期)。我希望它插入今天的日期,以便我可以稍后调用它并计算出已经过了多少天(我知道如何使用时间跨度)。那么请告诉我保存访问日期的正确方法。感谢名单
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();
答案 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值,该值将是当前系统日期。