我在将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.Date
,DateTime.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 + "')";
答案 0 :(得分:1)
指定当前日期时不需要传递参数。
让ms访问sql查询处理它,你需要将@SamplingDate
参数替换为Date()
例如
cmd.CommandText = "INSERT INTO tblData ([PIC], [Sampling Date]) VALUES (@PIC, 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")
其余。