在sql语句的末尾缺少分号(;)

0 c# sql ms-access

即时通讯使用访问数据库,我得到这个奇怪的错误...

在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)

Arr*_*ran 5

你正在混合一个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)