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います。この 2 つは一緒にはなりません。

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

UPDATE声明のことですか?

また、SQL インジェクションを検索し、SqlParameters を使用してクエリを作成することをお勧めします。あなたのコードは、現在非常に安全ではありません。

私はあなたが命令の後にいるのを見ることができますUPDATE. SQL コマンドは、INSERT指定したものを挿入するだけです。UPDATESQL インジェクションを回避するために使用するコマンドの例を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 に答える