String conn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\;
;Extended Properties='text;HDR=Yes;Format=Delimited(;)';";
OleDbConnection cn = new OleDbConnection(conn);
OleDbCommand cmd = new OleDbCommand("SELECT * FROM [mydb]", cn);
OleDbDataAdapter daAd = new OleDbDataAdapter();
daAd.SelectCommand= cmd;
cn.Open();
DataTable dt = new DataTable();
daAd.Fill(dt);
DateTime mydata= Convert.ToDateTime("01/01/1990");
DateTime mydata2= Convert.ToDateTime("01/01/2000");
直到现在都没有错,但是当我改变时
"SELECT * FROM [mydb]"
用
"SELECT * FROM [mydb] WHERE DATA>= '"+ mydata.Date +"' AND DATA<='"+ mydata2.Date +"'
我在查询'WHERE DATA =&gt; mydata AND DATA&lt; = mydata2'时出现“语法错误(缺少运算符)”的错误。 我真的不知道如何解决它。 更多信息:.CSV文件的格式如下:
DATA;INFO1;INFO2;INFO3
01/01/1990;1;2;3`
进入schema.ini是这样的:
[mydb.csv]
Format=Delimited(;)
ColNameHeader=True
DateTimeFormat=dd-MM-yyyy
Col1=DATA DateTime
Col2=info1 Long Width 3
Col3=info2 Integer
Col4=info3 Integer
编辑: 我正在运行x86七,我读到了解决JET驱动程序的不兼容性足够schema.ini文件,希望我是对的。
答案 0 :(得分:1)
嗯,这个:
SELECT * FROM [mydb] WHERE DATA=> mydata AND DATA<= mydata2
显然是无效的SQL。也许你的意思是:
SELECT * FROM [mydb] WHERE DATA>= mydata AND DATA<= mydata2
(您使用=>
代表“大于”而不是>=
。)
答案 1 :(得分:1)
我认为你的意思是:
SELECT * FROM [mydb] WHERE DATA >= mydata AND DATA <= mydata2
你刚刚获得了=&gt;错误的方式回合!
OP更正后的更新
是否由于你的schema.ini?你似乎有错误的DateTimeFormat:
DateTimeFormat=dd-MM-yyyy
不应该是:
DateTimeFormat=dd/MM/yyyy
第二次更新
将mydata更改为以下内容:
"SELECT * FROM [mydb] WHERE DATA >= '" +
mydata.ToString("dd/MM/yyyy") +
"' AND DATA <= '" + mydata2.ToString("dd/MM/yyyy") + "'"
答案 2 :(得分:0)
尝试
SELECT * FROM [mydb] WHERE DATA >= mydata AND DATA <= mydata2
请注意“&lt;”的顺序和第一次比较中的“=”。
答案 3 :(得分:0)
因为我正在查询csv我不能使用sql的函数(错误说它们不存在)甚至不能将我的DATA与字符串进行比较。如果我在查询中加入了一个不带引号的日期,但是我不尊重WHERE子句,选择所有记录。 查询似乎不仅仅适用于DateTime格式,所以我将我的数据放在yyyyMMdd整数格式中。这是我唯一的选择,但仍然不知道为什么不能使用Datetime字段进行搜索。 / p>