插入语句错误

时间:2013-02-13 18:05:24

标签: c# asp.net sql ms-access

我一直在尝试将特定数据插入我的数据库(在我的情况下是Microsoft Access), 这是我用c#编写的以下代码:

string sql = "Insert into Orders(User,PID,PName,Price,Amount)" +
             " values('" + od.User + "','" + od.Pid + "','" + 
             od.Pname + "','" + od.Price + "','" + od.Amount + "')";

现在我假设我写的形式完全没问题,不是吗? 我得到的错误是:

  

INSERT INTO语句中的语法错误。

3 个答案:

答案 0 :(得分:3)

Userreserved keyword。在其周围放置括号以指定您要将其用作标识符,而不是命令:

string sql = "Insert into Orders([User],PID,PName,Price,Amount)" +
         " values('" + od.User + "','" + od.Pid + "','" + 
         od.Pname + "','" + od.Price + "','" + od.Amount + "')";

这可以解决您的直接问题。使用参数化查询(正如几个人建议的那样)也可以避免将来出现问题。

答案 1 :(得分:1)

更改您的代码,以便使用参数化命令:

string sql = "Insert into Orders([User],PID,PName,Price,Amount) values(@user, @pid, @pname, @price, @amount)";

..here you will need to add your parameters to your command

这既可以避免SQL注入攻击,也可以防止非转义字符出错。

答案 2 :(得分:1)

这是一个你可以遵循的例子我已经粘贴了我刚才写的东西的副本 您可能希望关注此以供将来参考,请注意如何使用Parameters.AddWithValue()方法而不是使用Quoted值构建字符串查询字符串

private void btnInsert_Click(object sender, EventArgs e)
{
    using(SqlConnection con = new SqlConnection(connString))
    {
        con.Open();
        string Sql = "INSERT INTO Uyeleri (dID, FullName, Address, Mobile, Email, Comments ) " + 
                     "VALUES (@id, @name, @address, @mobile, @email, @comments");
        using(SqlCommand cmd = new SqlCommand(Sql, con))
        {
            cmd.Parameters.AddWithValue("@id", txtdID.Text);
            cmd.Parameters.AddWithValue("@name", txtAdiSoyadi.Text);
            cmd.Parameters.AddWithValue("@address", txtAddress.Text);
            cmd.Parameters.AddWithValue("@mobile", txtMobile.Text);
            cmd.Parameters.AddWithValue("@email", txtEmail.Text);
            cmd.Parameters.AddWithValue("@comments", txtComments.Text);
            cmd.ExecuteNonQuery();
        }
    }