0

我正在使用访问数据库,我得到了这个奇怪的错误......

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();
4

1 回答 1

5

您将WHERE子句与INSERT语句混合在一起,两者不能一起使用:

oleDbDataAdapter1.InsertCommand.CommandText =
        "insert into magazina(sasia) values('" + sasia_totale + "')";

你的意思是UPDATE声明吗?

我还建议您查找 SQL 注入,并使用 SqlParameters 来构建您的查询。您的代码目前非常不安全。

我可以看到你在执行UPDATE命令。INSERTSQL 命令只是插入你给它的任何东西。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();
于 2013-09-23T09:59:21.587 回答