Parameters.Add

时间:2020-02-12 03:52:28

标签: c# sql-server

尝试将静态值插入数据库。但是,当我尝试编译代码时出现错误

System.Data.dll中发生了类型为'System.Data.SqlClient.SqlException'的未处理的异常 附加信息:“ @ lname”附近的语法不正确。

这是我的代码:

    private void btnConnect_Click(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection(conString);


       SqlCommand query = new SqlCommand("INSERT INTO tbl_users (fname, mname, lname) VALUES ('@fname', '@mname', '@lname'", con);

        query.Parameters.Add("@fname", SqlDbType.VarChar, 50).Value = "Mark Dhem";
        query.Parameters.Add("@mname", SqlDbType.VarChar, 50).Value = "Subito";
        query.Parameters.Add("@lname", SqlDbType.VarChar, 50).Value = "Mansueto";

        con.Open();
        query.ExecuteNonQuery();
        con.Close();

    }

1 个答案:

答案 0 :(得分:3)

删除单引号。当我在这里时,连接应该在using块中,以确保在引发异常时仍保持关闭状态。

private void btnConnect_Click(object sender, EventArgs e)
{
    using (var con = new SqlConnection(conString))
    using (var query = new SqlCommand("INSERT INTO tbl_users (fname, mname, lname) VALUES (@fname, @mname, @lname)", con))
    {
        query.Parameters.Add("@fname", SqlDbType.VarChar, 50).Value = "Mark Dhem";
        query.Parameters.Add("@mname", SqlDbType.VarChar, 50).Value = "Subito";
        query.Parameters.Add("@lname", SqlDbType.VarChar, 50).Value = "Mansueto";

        con.Open();
        query.ExecuteNonQuery();
    }
}

但是这些都不是您看到错误的原因。 '@lname'仍然是有效的字符串文字,即使它不会执行您想要的操作。问题是语句末尾缺少右括号。

相关问题