C# 使用两个日期检索数据的SQL查询
我试图使用两个日期从数据库检索数据,但VisualStudio抛出语法错误 以下是使用sql查询填充数据集的方法:C# 使用两个日期检索数据的SQL查询,c#,sql,winforms,date,C#,Sql,Winforms,Date,我试图使用两个日期从数据库检索数据,但VisualStudio抛出语法错误 以下是使用sql查询填充数据集的方法: public DataSet OrderBetweenDates(string date1, string date2) { // string connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\Amrit\\Desktop\\Database.accdb ;Persist S
public DataSet OrderBetweenDates(string date1, string date2)
{
// string connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\Amrit\\Desktop\\Database.accdb ;Persist Security Info=False;";
DataSet dataSet = new DataSet();
OleDbConnection oleConn = new OleDbConnection(connString);
try
{
oleConn.Open();
string sql = "SELECT Order.OrderNumber, (Customer.Title +SPACE(2)+ Customer.CustomerName) as [Customer Name], Customer.CustomerEbayname, Customer.EmailAddress, Customer.PhoneNumber, (Customer.Address1 + SPACE(2) + Customer.Address2 + SPACE(2)+ Customer.City + SPACE(2) + Customer.PostCode + SPACE(2) + Customer.Country) as Address, Order.ItemPurchased, Order.PurchasedDate, Order.TotalPrice FROM Customer INNER JOIN [Order] ON Customer.[CustomerID] = Order.[CustomerID] WHERE [PurchasedDate] >= #date1# AND [PurchasedDate] <= #date2#";
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(sql, oleConn);
dataAdapter.Fill(dataSet, "Customer");
}
catch (Exception ex)
{
MessageBox.Show("An exception has been occured\n" + ex.ToString());
Console.WriteLine(ex.ToString());
}
finally
{
oleConn.Close();
}
if (dataSet.Tables.Count <= 0)
return null;
else
return dataSet;
}
你的情况如下:
WHERE [PurchasedDate] >= #date1# AND [PurchasedDate] <= #date2#
现在date1和date2不是有效的日期-您可能需要为这些日期的查询添加参数。除了已经提到的可能的日期格式问题外,请参见
SELECT Order.OrderNumber,
...
Order.ItemPurchased,
Order.PurchasedDate,
Order.TotalPrice
...
Order是Order BY的关键字,需要在所有位置将其包含在[]中
强烈推荐的推荐方式是使用参数。但如果您不想遵循最佳实践,并且总是想陷入困境,请尝试以下方法:
string sql = @"SELECT [Order].OrderNumber,
(Customer.Title +SPACE(2)+ Customer.CustomerName) as [Customer Name],
Customer.CustomerEbayname, Customer.EmailAddress, Customer.PhoneNumber,
(Customer.Address1 + SPACE(2) + Customer.Address2 + SPACE(2)+ Customer.City
+ SPACE(2) + Customer.PostCode + SPACE(2) + Customer.Country) as Address,
[Order].ItemPurchased, Order.PurchasedDate, Order.TotalPrice
FROM Customer INNER JOIN [Order] ON Customer.[CustomerID] = Order.[CustomerID]
WHERE [PurchasedDate] >= #" + date1 + "# AND [PurchasedDate] <= #" + date2 + "#";
你注意到变化了吗?您的日期参数与查询字符串相连。您读过吗?@MD.Unicorn,它适用于单个日期,我认为它也适用于日期之间的日期。请查看屏幕截图以了解错误。感谢您的反馈,,,将这样做,,
string sql = @"SELECT [Order].OrderNumber,
(Customer.Title +SPACE(2)+ Customer.CustomerName) as [Customer Name],
Customer.CustomerEbayname, Customer.EmailAddress, Customer.PhoneNumber,
(Customer.Address1 + SPACE(2) + Customer.Address2 + SPACE(2)+ Customer.City
+ SPACE(2) + Customer.PostCode + SPACE(2) + Customer.Country) as Address,
[Order].ItemPurchased, Order.PurchasedDate, Order.TotalPrice
FROM Customer INNER JOIN [Order] ON Customer.[CustomerID] = Order.[CustomerID]
WHERE [PurchasedDate] >= #" + date1 + "# AND [PurchasedDate] <= #" + date2 + "#";