C# 在Excel电子表格的SQL查询中包含字符串时出现问题
我正在使用C通过ASP.net web表单显示Excel电子表格中的数据。我想对数据运行SQL查询,但在确定如何在查询中使用字符串时遇到问题 下面是我在.aspx.cs文件中运行的代码。我还使用.aspx在GridView中显示数据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>我已经为您重写了代码,但是,您应该认真考虑遵守一些编码标准。请不要用变量来结束变量,
理想情况下,我想在字符串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;