类型'System.Data.SqlClient.SqlException'的未处理异常 发生在System.Data.dll
中其他信息:'Graneya'附近的语法不正确。
字符串')'后面的未闭合引号。
当我执行我的程序时,它给了我这样的错误;
这是我的代码:
private void btnKaydet_Click(object sender, EventArgs e) {
StringBuilder name = new StringBuilder();
foreach (Control cont in this.grpbxIstenenAnalizler.Controls) {
if (cont is CheckBox && ((CheckBox)cont).Checked == true) {
name.Append(((CheckBox)cont).Text.ToString() + " ");
}
}
sqlcon.Open();
SqlCommand sqlcmd = new SqlCommand("INSERT INTO TBL_NUMUNEKAYITDEFTERI(NUMUNEADI, NUMUNEGONDEREN) VALUES('" + cmbxNumuneCinsi.Text + "'" + cmbxGonderen.Text + "')", sqlcon);
sqlcmd.ExecuteNonQuery();
sqlcon.Close();
MessageBox.Show("Kayıt OK");
}
请告知
答案 0 :(得分:1)
更改
SqlCommand sqlcmd = new SqlCommand("INSERT INTO TBL_NUMUNEKAYITDEFTERI(NUMUNEADI, NUMUNEGONDEREN) VALUES('" + cmbxNumuneCinsi.Text + "'" + cmbxGonderen.Text + "')", sqlcon);
到
SqlCommand sqlcmd = new SqlCommand("INSERT INTO TBL_NUMUNEKAYITDEFTERI(NUMUNEADI, NUMUNEGONDEREN) VALUES('" + cmbxNumuneCinsi.Text + "','" + cmbxGonderen.Text + "')", sqlcon);
请注意
VALUES('" + cmbxNumuneCinsi.Text + "','" + cmbxGonderen.Text + "')"
另外,为避免SQL Injection,您应该使用parameterized queries,而不是字符串连接。
答案 1 :(得分:0)
我认为你错过了一个逗号,这就是为什么你的值部分只有一个字符,因为你连接它们。
('" + cmbxNumuneCinsi.Text + "'" + cmbxGonderen.Text + "')"
应该是
('" + cmbxNumuneCinsi.Text + "', '" + cmbxGonderen.Text + "')"
您应始终使用parameterized queries。这种字符串连接对SQL Injection攻击是开放的。同时使用using
statement来处理您的SqlConnection
和SqlCommand
自动,而不是手动调用.Close()
或.Dispose()
方法。
我认为您的列是nvarchar
,您可以使用;
using(var sqlcon = new SqlConnection(conString))
using(var sqlcmd = sqlcon.CreateCommand())
{
sqlcmd.CommandText = "INSERT INTO TBL_NUMUNEKAYITDEFTERI(NUMUNEADI, NUMUNEGONDEREN) VALUES(@ad, @gonderen)";
sqlcmd.Parameters.Add("@ad", SqlDbType.NVarChar).Value = cmbxNumuneCinsi.Text;
sqlcmd.Parameters.Add("@gonderen", SqlDbType.NVarChar).Value = cmbxGonderen.Text;
sqlcon.Open();
sqlcmd.ExecuteNonQuery();
}
答案 2 :(得分:0)
您应该使用参数来减少错误。
SqlCommand cmd = new SqlCommand(
"INSERT INTO TBL_NUMUNEKAYITDEFTERI(NUMUNEADI, NUMUNEGONDEREN) VALUES(@numuneCinsi, @numunegonderen)", sqlcon);
cmd.Parameters.Add(new SqlParameter("@numuneCinsi", "firstValue"));
cmd.Parameters.Add(new SqlParameter("@numunegonderen", "secondValue"));