Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用两个日期检索数据的SQL查询_C#_Sql_Winforms_Date - Fatal编程技术网

C# 使用两个日期检索数据的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

我试图使用两个日期从数据库检索数据,但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 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 + "#";