今儿无聊写ADO.NET,DataAdapter更新字段的时候直接蹦错误“INSERT INTO 语法错误”。

经DEBUG,注释掉DATE和TIME两个蛋疼名字的字段就可以正常执行。看来里面自动生成的INSERT INTO语句里面直接把DATE和TIME这两个关键字写进去了,我尝试把所有字段写到SELECT里面,DATE和TIME加方括号,继续无效。翻API,发现CommandBuilder有两个神奇的属性。

OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);
builder.QuotePrefix = "[";
builder.QuoteSuffix = "]";

运行成功。API里面说就是遇到SQL关键字的时候的前后缀,Access是方括号MySQL是引号什么的,太他喵的人性化了。

另外一个小收获是以前一直不知道为什么我的代码里DataSet.Tables写[0]就好使写表名就不好使。今天发现丫不是自动找SELECT语句里的表名,应该是在Fill里面自动制定,(不指定默认就是Table?)例:

DataSet set = new DataSet();
adapter.Fill(set,"fooTable");
DataTable table = set.Tables["fooTable"];

以上都是C#代码,VB.NET好像不能这么写set似乎是关键字。