即时通讯使用访问数据库,我得到这个奇怪的错误...
在sql语句结束时缺少分号...
ps我试着把分号但同样的东西......再次出错...请帮忙.
这是代码,错误从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();
Run Code Online (Sandbox Code Playgroud)
你正在混合一个WHERE条款和一个INSERT声明,两个不一起:
oleDbDataAdapter1.InsertCommand.CommandText =
"insert into magazina(sasia) values('" + sasia_totale + "')";
Run Code Online (Sandbox Code Playgroud)
你是说一个UPDATE声明吗?
我还建议你查找SQL injecton,并使用SqlParameters来构建查询.你的代码,目前非常不安全.
我可以看到你正在接受UPDATE命令.该INSERTSQL命令只是要插入你给它什么.下面是一个用于帮助避免SQL注入的UPDATE命令示例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();
Run Code Online (Sandbox Code Playgroud)