excel列select查询在C#winform中
我试图匹配Excel列表types为DateTime的列中的date。 使用以下查询
DateTime dtNew = Convert.ToDateTime("7/16/2010"); OleDbDataAdapter da = new OleDbDataAdapter("Select * FROM [" + SheetName + "$] where [Hand off date] = '" + dtNew + "'", conn);
我正进入(状态
标准expression式中的数据types不匹配“。
请帮忙。
既然你使用JET数据库提供程序(我在这里假设),这意味着你的连接string看起来像这样:
string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Temp\SOTest3.xls;Extended Properties=""Excel 8.0;HDR=YES;""";
您的date需要用'#'符号(不包括单引号)包围。 这应该工作。
这是一个适合我的例子:
static void Main(string[] args) { string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Temp\SOTest3.xls;Extended Properties=""Excel 8.0;HDR=YES;"""; DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OleDb"); using (DbConnection connection = factory.CreateConnection()) { connection.ConnectionString = connectionString; using (DbCommand command = connection.CreateCommand()) { connection.Open(); //open the connection DateTime dtNew = Convert.ToDateTime("7/21/2010"); DbDataAdapter da = factory.CreateDataAdapter(); da.SelectCommand = command; da.SelectCommand.Connection = connection; da.SelectCommand.CommandText = "SELECT * FROM [Sheet1$] WHERE [Hand Off Date] = #" + dtNew.ToString("yyyy-MM-dd") + "#"; DataTable dtDate = new DataTable(); da.Fill(dtDate); Console.WriteLine(dtDate.Rows.Count); Console.ReadLine(); } } }
希望这可以帮助!!
你有没有尝试过
OleDbDataAdapter da = new OleDbDataAdapter("Select * FROM [" + SheetName + "$] where [Hand off date] = '" + dtNew.ToString("yyyy-mm-dd") + "'", conn);