Я использую драйвер Impala ODBC, предоставленный Cloudera. Кажется, я не могу правильно использовать параметры запроса. Например:
OdbcCommand command = DbConnection.CreateCommand();
command.CommandText = "INSERT INTO TABLE test VALUES(?, ?)";
command.Parameters.Add("key", OdbcType.VarChar).Value = "csharp";
command.Parameters.Add("val", OdbcType.VarChar).Value = "test";
command.ExecuteNonQuery();
выдает следующее исключение.
{"ОШИБКА [HY000] [Cloudera] [ImpalaODBC] (110) Ошибка при выполнении запроса в Impala: [HY000]: AnalysisException: синтаксическая ошибка в строке 1: \ nВСТАВИТЬ В ТАБЛИЦУ тестовые ЗНАЧЕНИЯ (?,?) \ N
^ \ nОбнаружен: неожиданный символ \ nОжидаемый: CASE, CAST, EXISTS, FALSE, IF, INTERVAL, NOT, NULL, TRUNCATE, TRUE, IDENTIFIER \ n \ nПРИЧИНОВАН: Исключение: синтаксическая ошибка \ n "}
Что должно управлять параметрами запроса (и заменой? На значения), библиотекой ODBC или драйвером? Кажется, это драйвер, а в данном случае он не реализован ... И обидно, потому что я не могу использовать подготовленный оператор.
Кто-нибудь знает, как использовать параметры запроса с драйвером Impala ODBC?
"command.CommandText = "INSERT INTO TABLE test VALUES(?, ?)";
правильно, ноcommand.CommandText = "INSERT INTO TABLE test VALUES(?, ?);";
выдаст мне ту же ошибку, что и вы. Это не ваша проблема, но подумал, что это может помочь другим. - person Patrick Szalapski   schedule 25.04.2018