日期:2014-05-18  浏览次数:20759 次

access插入数据的问题
第一次使用access作为数据库,卡在插入的问题上了
我在access上建了一个表 有四个字段分别为
id 自动编号 key
url 文本
mark 是/否
email 文本
time 日期/时间
插入的代码
C# code

   OleDbConnection conn = new OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;Data Source=Data.mdb");
            bool bo = true;
            DateTime dt = DateTime.Now;
            conn.Open(); 
            OleDbCommand cmd = new OleDbCommand();
            cmd.Connection = conn;
            string x1 = "ddd";
            string x2 = "aaaa";
            cmd.CommandText = string.Format("insert into emailList(url,email,mark,time) values('{0}','{1}',{2},#{3}#)",x1,x2,bo,dt.ToString("yyyy/MM/dd"));
            cmd.ExecuteNonQuery();//这个地方报错:INSERT INTO 语句的语法错误。各位看官能告诉我出错在哪里吗?


我把id去掉 不设关键字直接用 cmd.CommandText = string.Format("insert into emailList values('{0}','{1}',{2},#{3}#)",x1,x2,bo,dt.ToString("yyyy/MM/dd"))插入成功!难倒是出在id上?
各位能看出我出的问题在哪里吗?请不吝指教

------解决方案--------------------
insert into emailList(url,email,mark,time) values('0}','{1}',{2},#{3}#)

insert into emailList(url,email,mark,time) values('a','b','c','#2010-2-2#')
看看还错不会,你格式成我这样的你看看还错不??

------解决方案--------------------
是不是有关键字,改成下面这样试试
 cmd.CommandText = string.Format("insert into emailList([url],[email],[mark],[time]) values('{0}','{1}',{2},#{3}#)",x1,x2,bo,dt.ToString("yyyy/MM/dd"));
------解决方案--------------------
不要使用Format。
最好的写法是
sql = "insert into emailList(url,email,mark,time) values(@url,@email,@mark,@time)"
采用参数化的方法