尝试将静态值插入数据库。但是,当我尝试编译代码时出现错误
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();
}
答案 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'
仍然是有效的字符串文字,即使它不会执行您想要的操作。问题是语句末尾缺少右括号。