C# 在Excel电子表格的SQL查询中包含字符串时出现问题

C# 在Excel电子表格的SQL查询中包含字符串时出现问题,c#,asp.net,excel,tsql,oledb,C#,Asp.net,Excel,Tsql,Oledb,我正在使用C通过ASP.net web表单显示Excel电子表格中的数据。我想对数据运行SQL查询,但在确定如何在查询中使用字符串时遇到问题 下面是我在.aspx.cs文件中运行的代码。我还使用.aspx在GridView中显示数据 理想情况下,我想在字符串sSQL=SELECT*FROM[Sheet1$A1:D14]中添加一个WHERE子句;为了查询当前月份,并从Excel电子表格中显示所述月份的行。 < P>我已经为您重写了代码,但是,您应该认真考虑遵守一些编码标准。请不要用变量来结束变量,

我正在使用C通过ASP.net web表单显示Excel电子表格中的数据。我想对数据运行SQL查询,但在确定如何在查询中使用字符串时遇到问题

下面是我在.aspx.cs文件中运行的代码。我还使用.aspx在GridView中显示数据


理想情况下,我想在字符串sSQL=SELECT*FROM[Sheet1$A1:D14]中添加一个WHERE子句;为了查询当前月份,并从Excel电子表格中显示所述月份的行。

< P>我已经为您重写了代码,但是,您应该认真考虑遵守一些编码标准。请不要用变量来结束变量,并考虑格式化代码,这样代码就更可读了。此外,您还需要将OleDbConnection封装在using语句中,然后才能正确处理它

这是格式化和重新编写的代码

public partial class ExcelAdapter : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Server.MapPath("ExcelCSTest.xls") + ";" + "Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"";

        using (OleDbConnection objConn = new OleDbConnection(sConnectionString))
        {
            objConn.Open();
            var sSQL = "SELECT * FROM [Sheet1$A1:D14]";
            OleDbCommand objCmdSelect = new OleDbCommand(sSQL, objConn);
            objCmdSelect.CommandType = CommandType.Text;
            DataSet objDataset = new DataSet();
            OleDbDataAdapter objAdapter = new OleDbDataAdapter(objCmdSelect).Fill(objDataset);
            objConn.Close();
        }
    }
}
我还没有时间测试这段代码,但我很确定它应该是正确的。我希望

进一步了解本教程。这是一个很好的来源,让你知道如何正确地完成这项工作

Where子句

将where子句添加到SQL中非常容易,甚至可以将其参数化以使其更标准

您的代码应该类似于

    var sSQL = "SELECT * FROM [Sheet1$A1:D14] WHERE currentDate = ?";
    cmd.Parameter.Add("@Param1", OleDbType.VarChar).Value = todaysDate;

有关如何进行参数化的完整示例,请查看,有关示例的更多详细信息,请查看我对该问题的回答示例

Excel是网站中可能使用的最差数据源。即使是一个平面文件也会更好。正如@TomyVarghese提到的,当您包含where子句时,会出现什么错误?
    var sSQL = "SELECT * FROM [Sheet1$A1:D14] WHERE currentDate = ?";
    cmd.Parameter.Add("@Param1", OleDbType.VarChar).Value = todaysDate;