-3

代码中没有错误,但数据库中没有出现任何信息。

        string mysql;
        mysql = "INSERT INTO Cars(Make,Model,Price,[Image]) VALUES ('"
        + tbMake.Text + "','" + tbModel.Text + "'," + tbPrice.Text + ",'" +         FileUpload1.FileName + "')";
        siteDB.InsertCommand = mysql;
        DataList1.DataBind();

干杯。

4

2 回答 2

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();
于 2013-05-08T13:14:10.803 回答
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();
于 2013-05-08T13:16:01.953 回答