Msgstr "Ошибка синтаксиса в инструкции INSERT INTO".Зачем? - PullRequest
4 голосов
/ 07 апреля 2010

Мой код ниже. У меня есть метод, в котором я передаю три параметра, и они записываются в таблицу базы данных MS Access. Тем не менее, я продолжаю получать сообщение об ошибке синтаксиса. Кто-нибудь может сказать мне, почему? Я получил этот пример из интернета.

        private static void insertRecord(string day, int hour, int loadKW)
    {
        string connString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\LoadForecastDB.accdb";
        OleDbConnection conn = new OleDbConnection(connString);

        string ins = @"INSERT INTO Forecasts (Day, Hour, Load) VALUES (?,?,?)";

        OleDbCommand cmd = new OleDbCommand(ins, conn);

        cmd.Parameters.Add("@day", OleDbType.VarChar).Value = day;
        cmd.Parameters.Add("@hour", OleDbType.Integer).Value = hour;
        cmd.Parameters.Add("@load", OleDbType.Integer).Value = loadKW;

        conn.Open();

        try
        {
            int count = cmd.ExecuteNonQuery();
        }
        catch (OleDbException ex)
        {
            Console.WriteLine(ex.Message);
        }
        finally
        {
            conn.Close();
        }
    }

Ответы [ 3 ]

7 голосов
/ 07 апреля 2010

Я думаю, это может быть потому, что ваши имена столбцов (день и час) также являются ключевыми словами. Может быть, вы можете поместить `(инвертированные одинарные кавычки) вокруг них (это работает в MySQL, не знаю о MS Access)

2 голосов
/ 07 апреля 2010

Попробуйте изменить

string ins = @"INSERT INTO Forecasts (Day, Hour, Load) VALUES (?,?,?)"; 

Кому:

string ins = @"INSERT INTO Forecasts ([Day], [Hour], [Load]) VALUES (@day, @hour, @load)"; 
0 голосов
/ 07 апреля 2010

Другим вариантом может быть указание переменных связывания с номерами:

    cmd.Parameters.Add(1, OleDbType.VarChar).Value = day;
    cmd.Parameters.Add(2, OleDbType.Integer).Value = hour;
    cmd.Parameters.Add(3, OleDbType.Integer).Value = loadKW;

Примечание. Я не знаю C #, но аналогичный подход работает для Java и JDBC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...