Я пытаюсь создать запись, содержащую путь к файлу. Вставка выполняется в базу данных Postgres
, в которой включен UTF8, с использованием драйвера NpqSQL
.
Определение моей таблицы:
CREATE TABLE images
(
id serial,
file_location character varying NOT NULL
)
Мой оператор SQL, включая код, который его выполняет (сводится к минимуму):
string sqlStatement = "INSERT INTO images (file_location) VALUES ('\\2010')";
NpgsqlConnection dbConnection = new NpgsqlConnection(connectionString);
dbConnection.Open();
NpgsqlCommand dbCommand = new NpgsqlCommand(sqlStatement , dbConnection);
int result = dbCommand.ExecuteNonQuery();
dbConnection.Close();
При использовании pgAdmin для вставки вышеприведенного оператора он работает нормально. При использовании драйвера NpgSQL через Visual Studio C # происходит сбой с этим исключением:
"ERROR: 22021: invalid byte sequence for encoding \"UTF8\": 0x81"
Как точно объясняет Милен , Постгрес интерпретирует утверждение как octal
число (\ o201 == 0x81).
Как и Милен также описывает, E
infront пути не помогает.
Итак, краткий обзор: почему NpqSQL останавливает мой ввод \\2010
?