ファイルへのパスを含むレコードを作成しようとしています。挿入は、ドライバー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を使用して上記のステートメントを挿入すると、正常に機能します。Visual Studio C#を介してNpgSQLドライバーを使用すると、次の例外で失敗します。
"ERROR: 22021: invalid byte sequence for encoding \"UTF8\": 0x81"
Milenが正確に説明しているように、Postgresはステートメントを数値として解釈します(octal
\ o201 == 0x81)。
マイレンも説明しているように、E
道の前は役に立ちません。
簡単に要約すると、NpqSQLが挿入を停止するのはなぜ\\2010
ですか?