代码中没有错误,但数据库中没有出现任何信息。
string mysql;
mysql = "INSERT INTO Cars(Make,Model,Price,[Image]) VALUES ('"
+ tbMake.Text + "','" + tbModel.Text + "'," + tbPrice.Text + ",'" + FileUpload1.FileName + "')";
siteDB.InsertCommand = mysql;
DataList1.DataBind();
干杯。
答案 0 :(得分:3)
对于Access数据库,IMAGE一词是保留关键字 如果你想使用它,你需要用方形支架封装
"INSERT INTO Cars(Make,Model,Price,[Image]) VALUES ......"
这将解决您的即时问题,但正如John Skeet在其评论中指出的那样,您需要使用参数化查询,因为这也解决了正确格式化文本值的问题。
如果型号名称(或品牌)包含单引号,您的方便查询会发生什么? 另一个语法错误正等着你(根据我的经验,当你完成代码并准备好工作时它会咬你)
只是为了完成答案,请随意测试是否以这种方式将记录添加到数据库
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();
答案 1 :(得分:0)
我假设siteDB是SQLDataAdapter
。
在这种情况下,您的代码至少应更改为:
string mysql;
mysql = "INSERT INTO Cars(Make,Model,Price,Image) VALUES ('"
+ tbMake.Text + "','" + tbModel.Text + "'," + tbPrice.Text + ",'" + FileUpload1.FileName + "')";
siteDB.InsertCommand = mysql;
DataList1.DataBind();