即时通讯使用访问数据库,我得到了这个奇怪的错误...
在sql语句结束时缺少分号...
p.s我试着把分号但同样的东西......再次出错...... 请帮忙。
这是代码,错误从Insert Into Statement开始:
oleDbConnection1.Open();
Int32 sasia_aktuale;
Int32 sasia_e_shtuar = Convert.ToInt32(textBox1.Text.Trim());
string kerkesa = "select * from magazina where emri = '"+listBox1.SelectedItem+"'";
OleDbCommand komanda = new OleDbCommand(kerkesa, oleDbConnection1);
OleDbDataReader lexo = komanda.ExecuteReader();
lexo.Read();
sasia_aktuale = Convert.ToInt32(lexo.GetValue(2).ToString());
lexo.Close();
Int32 sasia_totale = sasia_aktuale + sasia_e_shtuar;
oleDbDataAdapter1.InsertCommand.CommandText =
"insert into magazina(sasia) values('" + sasia_totale + "') where emri= '" + listBox1.SelectedItem + "'";
oleDbDataAdapter1.InsertCommand.ExecuteNonQuery();
MessageBox.Show("Sasia per produktin " + listBox1.SelectedItem + " u shtua me sukses!", "Sasia u shtua");
oleDbConnection1.Close();
答案 0 :(得分:5)
您正在将WHERE
子句与INSERT
语句混合在一起,两者不会在一起:
oleDbDataAdapter1.InsertCommand.CommandText =
"insert into magazina(sasia) values('" + sasia_totale + "')";
您的意思是UPDATE
声明吗?
我还建议您查找SQL injecton,并使用SqlParameters构建查询。你的代码目前非常不安全。
我可以看到你正在执行UPDATE
命令。 INSERT
SQL命令只是插入你提供的任何内容。使用UPDATE
来帮助避免SQL注入的SqlParameters
命令的示例如下,虽然这是未经测试的,因为我显然无法访问您的设置(我也不是这样做的IDE ):
var updateCommand = new OleDbCommand("UPDATE magazina SET sasia = @sasia_totale WHERE emri = @emri");
updateCommand.Parameters.AddWithValue("@sasia_totale", sasia_totale);
updateCommand.Parameters.AddWithValue("@emri", listBox1.SelectedItem.ToString());
oleDbDataAdapter1.UpdateCommand = updateCommand;
oleDbDataAdapter1.UpdateCommand.ExecuteNonQuery();