执行插入时出现 SQL 错误:'s' 附近的语法不正确

Getting SQL error when executing INSERT: Incorrect syntax near 's'

我正在尝试创建一个 Windows 表单,当我在其中输入数据并单击提交时,它会将数据插入到我的数据库中。它适用于较短的东西,但是当我尝试输入一些较长的句子时,它会这样说:

这是代码:

private void SubmitButton_Click(object sender, EventArgs e)
{
    con.Open();
    cmd = new SqlCommand("INSERT INTO Jokes VALUES('" + EnterJoke.Text + "', '" + EnterAnswer.Text + "')", con);

    cmd.ExecuteNonQuery();

    MessageBox.Show(" Data Has Been Saved In Database ");
    con.Close();
}

我在这一行收到错误:

cmd.ExecuteNonQuery();

输入文本必须包含特殊字符标点符号,因为您的代码正在进行纯连接,所以该符号不会被视为文字文本的一部分。

尝试使用以下代码解决两个问题:

  1. 最重要的是 SQL 注入漏洞。
  2. 其次,你的问题(如果与输入字符串有特殊字符有关)
    private void SubmitButton_Click(object sender, EventArgs e)
    {
        SqlParameter joke = new SqlParameter();
        joke.ParameterName = "@joke";
        joke.SqlDbType = SqlDbType.VarChar;
        joke.Value = EnterJoke.Text;

        SqlParameter answer = new SqlParameter();
        answer.ParameterName = "@answer";
        answer.SqlDbType = SqlDbType.VarChar;
        answer.Value = EnterAnswer.Text;

        cmd = new SqlCommand("INSERT INTO Jokes VALUES(@joke, @answer)", con);    
        cmd.Parameters.Add(joke);
        cmd.Parameters.Add(answer);

        con.Open();
        cmd.ExecuteNonQuery();

        MessageBox.Show(" Data Has Been Saved In Database ");
        con.Close();
    }