对于Access数据库,IMAGE字是保留关键字。
如果你想使用它,你需要用方brakets
"INSERT INTO Cars(Make,Model,Price,[Image]) VALUES ......"
封装这将解决你眼前的问题,但正如约翰飞碟双向在其评论中指出,你需要使用参数化查询,因为这解决了也正确格式化文本值的问题。
如果模型名称(或make)包含单引号,那么您的便捷查询会发生什么?
另一个语法错误在等着你(从我的经验,它会咬你就在你已经完成了代码,并准备工作)
只是为了完成答案,随意测试,如果通过这种方式,将记录添加到您的分区
mysql = "INSERT INTO Cars(Make,Model,Price,[Image]) VALUES (?,?,?,?)";
OleDbCommand cmd = new OleDbCommand(mysql, con);
cmd.Parameters.AddWithValue("@p1", tbMake.Text);
cmd.Parameters.AddWithValue("@p2", tbModel.Text);
cmd.Parameters.AddWithValue("@p3", Convert.ToDecimal(tbPrice.Text));
cmd.Parameters.AddWithValue("@p4", FileUpload1.FileName);
cmd.ExecuteNonQuery();
好第一个问题是,你要的值直接嵌入到SQL,而不是使用参数化的SQL。 *先修复*,然后看看它是否有帮助。 (例如,它可以解决数据中引号的问题。) – 2013-05-08 13:05:03
向Jon Skeet的陈述中添加一些内容:这也最大限度地减少了SQL注入的风险。 – jAC 2013-05-08 13:06:55
为什么在插入语句中使用SelectCommand? – nmat 2013-05-08 13:07:04