ОШИБКА [42000] [Microsoft] [ODBC Visual FoxPro Driver] Синтаксическая ошибка - PullRequest
0 голосов
/ 10 марта 2011

Hy
Я хочу вставить в ODBC, и у меня есть ошибка: ОШИБКА [42000] [Microsoft] [ODBC Visual FoxPro Driver] Синтаксическая ошибка.
Мой код:

string number;

insertStatement = "INSERT INTO " + tabela + " (Data, Fetr, Fldo, Nrdo, Dii) " +
        " VALUES ( "+ "@data" +", 'cc','CD', " +  number + ","+ dii + ")";

       OdbcCommand cmd = new OdbcCommand(insertStatement, this.connection);             

        cmd.Parameters.Add("@data",OdbcType.DateTime).Value = data;

        cmd.ExecuteNonQuery();

Проблема с данными, но я не могу понять, в чем проблема.
Кто-нибудь может мне помочь?
Спасибо

1 Ответ

1 голос
/ 10 марта 2011

попробуй с? вместо @data в запросе, вот так:

insertStatement = "INSERT INTO " + tabela + " (Data, Fetr, Fldo, Nrdo, Dii) " +
        " VALUES ( ? , 'cc','CD', " +  number + ","+ dii + ")"; 

Msdn говорит:

Когда для CommandType установлено значение «Текст», Поставщик данных .NET Framework для ODBC не поддерживает прохождение имен параметры для оператора SQL или для хранимая процедура, вызываемая OdbcCommand. В любом из этих случаев используйте знак вопроса (?).

UPDATE Вы можете попробовать объединить свою дату непосредственно во вставке в этом формате { d '2011-03-10' } (см. Формат даты и времени ODBC для справки) и удалить параметр.

insertStatement = "INSERT INTO " + tabela + " (Data, Fetr, Fldo, Nrdo, Dii) " +
            " VALUES ( { d '" +
            data.ToString("yyyy-MM-dd") 
             + "' } , 'cc','CD', " +  number + ","+ dii + ")";
...