Исключение OleDbException не обработано: синтаксическая ошибка (отсутствует оператор) в выражении запроса - PullRequest
0 голосов
/ 24 ноября 2011

Я новичок в создании приложения с использованием Visual Stuido 2010 C # и Microsft Access 2007. Я планирую создать приложение, в котором пользователь сможет добавлять данные в базу данных (MS-Access). Но я получил сообщение о том, что " Синтаксическая ошибка (отсутствует оператор) в выражении запроса ". Я действительно не могу найти, в чем проблема с моим кодом.

Это мой код при добавлении данных в базу данных:

private void buttonSaveFuelLimit_Click(object sender, EventArgs e)
    {
        string MyConString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\KKKKK\Documents\Visual Studio 2010\Projects\Trial\Trial\gxi.accdb";
        OleDbConnection connection = new OleDbConnection(MyConString);
        OleDbCommand command = connection.CreateCommand();
        command.Connection = connection;
        using (OleDbConnection conn = new OleDbConnection(MyConString))
        {
            connection.Open();
            using (OleDbCommand com = connection.CreateCommand())
            {
                command.CommandText = "insert into fuel_limit(fuel_limit_code, fuel_limit_description) values(?fuel_limit_code, ?fuel_limit_description)";
                command.Parameters.Add(new OleDbParameter("?fuel_limit_code", OleDbType.VarChar));
                command.Parameters.Add(new OleDbParameter("?fuel_limit_description", OleDbType.VarChar));
                command.Parameters["?fuel_limit_code"].Value = textBoxFuelLimitCode.Text;
                command.Parameters["?fuel_limit_description"].Value = textBoxFuelLimitDesc.Text;
                command.ExecuteNonQuery();
                MessageBox.Show("Data Saved");
            }
        }
    }

Это снимок экрана с сообщением об ошибке: enter image description here

Ответы [ 2 ]

4 голосов
/ 24 ноября 2011

Вам нужна часть значений для вставки в оператор.

вставка в значения fuel_limit (fuel_limit_code, fuel_limit_description) (? Fuel_limit_code,? Fuel_limit_description)

Кроме того, похоже, что вам нужноиспользовать параметр description при установке значения в строке прямо над комментарием ExecuteNonQuery.

1 голос
/ 24 ноября 2011

--- Отредактированный ответ --- будет работать следующий


command.CommandText = "insert into fuel_limit(fuel_limit_code, fuel_limit_description) values(?, ?)";
command.Parameters.AddWithValue(new OleDbParameter("@fuel_limit_code",textBoxFuelLimitCode.Text));
command.Parameters.AddWithValue(new OleDbParameter("@fuel_limit_desc", textBoxFuelLimitDesc.Text));
command.ExecuteNonQuery();


--- старый ответ ---

вот строка, которая нуждается в исправлении


command.CommandText = "insert into fuel_limit(fuel_limit_code, fuel_limit_description)";
//should ne
command.CommandText = "insert into fuel_limit(fuel_limit_code, fuel_limit_description) values(?,?)";
...