C# ACCESS数据库查询
我尝试在特定日期之间接收值。但我的代码给出了错误C# ACCESS数据库查询,c#,ms-access,C#,Ms Access,我尝试在特定日期之间接收值。但我的代码给出了错误 cmd.CommandText = "SELECT * FROM gider WHERE [tarih] Between #" + startdate + "# and #" + enddate+ "#"; 我得到了以下错误 System.Data.dll中发生“System.Data.OleDb.OledBeException”类型的异常,但未在用户代码中处理 其他信息:查询表达式“
cmd.CommandText = "SELECT * FROM gider WHERE [tarih] Between #" + startdate + "# and #" + enddate+ "#";
我得到了以下错误
System.Data.dll中发生“System.Data.OleDb.OledBeException”类型的异常,但未在用户代码中处理
其他信息:查询表达式“[tarih]中的日期在#22.03.2006 15:31:48#和#22.03.2016 15:31:48”之间出现语法错误
我搜索了很多,但所有的代码示例看起来都像我的。我找不到解决办法
非常感谢您的帮助。试试这个:
1:
yyyy-mm-dd
yyyy-mm-dd
您应该在查询中使用
OleDbParameter
。它将一次解决2个问题
cmd.CommandText = "SELECT * FROM gider WHERE [tarih] Between @startdate and @enddate";
cmd.Parameters.Add("@startdate", OleDbType.Date).Value = startdate;
cmd.Parameters.Add("@enddate", OleDbType.Date).Value = enddate;
您应该在查询中使用
OleDbParameter
。它将一次解决2个问题
cmd.CommandText = "SELECT * FROM gider WHERE [tarih] Between @startdate and @enddate";
cmd.Parameters.Add("@startdate", OleDbType.Date).Value = startdate;
cmd.Parameters.Add("@enddate", OleDbType.Date).Value = enddate;
不知道具体的访问语法。但除此之外:您的代码容易受到攻击!不幸的是,盖伊两个都试过了。还要感谢Rene,我会在发现问题后修复sql inj风险,因为我不知道具体的访问语法。但除此之外:您的代码容易受到攻击!不幸的是,盖伊两个都试过了。还感谢Rene,我会在发现问题后修复sql inj风险谢谢,我喜欢这样做,但现在我得到了额外的信息:“条件表达式中的数据类型不匹配。”错误。我在c#DateTime startdate、DateTime enddate和access:Date/Time General Date中的定义如果您指定
SqlDbType
。更改为:cmd.Parameters.Add(新的SqlParameter(“@startdate”,SqlDbType.Date){Value=startdate})
这个答案肯定是正确的,但是(1)在添加参数时不需要使用新的构造,(2)异常显示代码使用的是OleDb,因此答案应该使用OleDb。。。对象而不是Sql。。。使用OleDb对象的好处。我更新了我的答案。我也不确定新的
,你能举个例子吗?我没有看到允许同时指定名称、DbType和值的函数。cmd.Parameters.Add(“?”,OleDbType.Date)。value=startdate;谢谢,我确实喜欢这样做,但现在我得到了额外的信息:“条件表达式中的数据类型不匹配。”错误。我在c#DateTime startdate、DateTime enddate和access:Date/Time General Date中的定义如果您指定SqlDbType
。更改为:cmd.Parameters.Add(新的SqlParameter(“@startdate”,SqlDbType.Date){Value=startdate})
这个答案肯定是正确的,但是(1)在添加参数时不需要使用新的构造,(2)异常显示代码使用的是OleDb,因此答案应该使用OleDb。。。对象而不是Sql。。。使用OleDb对象的好处。我更新了我的答案。我也不确定新的
,你能举个例子吗?我没有看到允许同时指定名称、DbType和值的函数。cmd.Parameters.Add(“?”,OleDbType.Date)。value=startdate;