2016-08-09 27 views
1

我在经过DateTime.现在到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.....和None它正在工作。

注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 + "')"; 
+1

相关:http://www.codeproject.com/Questions/660282 /使用Csharp-to-MS-Acce-Date-Format-in-Select-Query-With-Csharp-To-MS-Acce –

+0

在建议的网页上测试了解决方案,它不起作用 – user6648485

+0

'DateTime.Now'获取“本地”时间问题出于几个原因),你确定你不想明确得到UTC('DateTime.Ut cNow')?另外,你是什么意思的“不工作”?抛出异常(哪一个)?输入错误的数据(什么数据)? –

回答

1

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

让毫秒的存取SQL查询处理它,则需要更换@SamplingDate参数Date()例如

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

这里是最好的解释Insert today's date

+0

也许吧。如果数据库的设置与客户端不同,则可能会产生错误的结果。 –

+0

您的意思是日期格式? –

+0

@Shift N'Tab,........ Values(...,Date())'';工作正常。谢谢 – user6648485

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; 

+0

这个想法并不像它显示的那样工作(标准表达式中的数据类型不匹配)。 – user6648485