将日期插入访问数据库
Posted
技术标签:
【中文标题】将日期插入访问数据库【英文标题】:Inserting date into access database 【发布时间】:2013-07-09 16:31:05 【问题描述】:我在将日期插入访问时遇到问题,访问时数据类型是日期/时间(一般日期)。我希望它插入今天的日期,以便我以后可以调用它并计算出已经过去了多少天(我知道如何使用时间跨度来做到这一点)。所以请告诉我保存访问日期的正确方法。谢谢
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();
【问题讨论】:
您遇到的具体问题是什么?您收到错误消息了吗? 您收到什么错误? 我没有收到错误,当我签入数据库时日期不在那里 检查以下解决方案:***.com/questions/9527958/… 'INSERT .. WHERE` 应该做什么?INSERT
接收您要为其设置值的列列表,将新行添加到表中,并将指定列的内容设置为您提供的值。它正在添加一个新行,那么WHERE
应该做什么?
【参考方案1】:
有时您的设备 DateTime 格式不适合 DB ,使用以下 DateTime 格式总是被 DB 接受。
替换传递日期参数如下:
cmd.Parameters.AddWithValue("@PaidDate", dateNow.ToString("yyyyMMdd"));
【讨论】:
【参考方案2】:我怀疑您正在寻找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();
【讨论】:
【参考方案3】:试试这个:
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 值,这将是当前系统日期。
【讨论】:
以上是关于将日期插入访问数据库的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 C# 仅将日期(不包括时间)插入 ms 访问数据库