我正在尝试创建一个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();
输入文本必须具有特殊的字符标点符号,因为您的代码正在执行普通串联,因此不能将其作为文字文本的一部分。
尝试下面的代码修复两个问题:
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();
}
您在文本中转换还是使用‘如果要转换sql,则将其视为攻击。