将DateTime.Now传递到Access数据库

时间:2016-08-09 03:08:03

标签: c# ms-access

我在将DateTime. Now传递到Access数据库时遇到问题:

oleDBCommand.CommandText =
  "INSERT INTO tblData "([PIC], [Sampling Date]) "VALUES (@PIC, @SamplingDate)";

oleDBCommand.Parameters.Add(new OleDbParameter("@PIC", combobox1.Text));
oleDBCommand.Parameters.Add(new OleDbParameter("@SamplingDate", DateTime.Now));

我尝试了很多来自互联网的方法,例如使用oleDBType.DateDateTime.Now.ToString(),使用AddWithValue.....并且没有任何方法正常工作。

注1:数据库设置[Sampling Date] = Data Type: Date/Time (Format - Long Time),数据库

注2 :以下代码正常运行,但我更喜欢使用.parameters,因为它看起来更加整洁,易于管理。

oleDBCommand.CommandText =
 "INSERT INTO tblData ([PIC], [Sampling Date]) " VALUES ('" + combobox1.Text + "', '" + DateTime.Now + "')";

3 个答案:

答案 0 :(得分:1)

指定当前日期时不需要传递参数。

让ms访问sql查询处理它,你需要将@SamplingDate参数替换为Date()例如

cmd.CommandText = "INSERT INTO tblData ([PIC], [Sampling Date]) VALUES (@PIC, Date())";

以下是Insert today's date

的最佳解释

答案 1 :(得分:0)

试试这个,

cmd.CommandText = "INSERT INTO tblData ([PIC], [Sampling Date]) VALUES (@PIC, @SamplingDate)";
cmd.Parameters.Add("@PIC",OleDbType.VarChar).Value = combobox1.Text;
cmd.Parameters.Add("@PIC", OleDbType.Date).Value = DateTime.Now;

答案 2 :(得分:0)

这周我一直在挣扎,被接受的答案确实并没有帮助我。我发现,如果我将日期和时间分配为ODBC规范字符串(yyyy-mm-dd hh:mi:ss),则效果很好。因此,我的C#代码如下所示:

InsertCommand.Parameters.Add("@" + column.ColumnName, OleDbType.DBTimeStamp).Value = DateTime.Now.ToString("u");

第一行,然后

InsertCommand.Parameters.Add("@" + column.ColumnName).Value = DateTime.Now.ToString("u")

其余。