2016-09-15 1 views
1

私はUTF8エンコーディングを使用するPostgreSQLデータベースを持っています。私はこれがデフォルトのエンコーディングだと信じています。パラメータ化されたSQLクエリで無効なUTF8バイトシーケンスを回避するにはどうすればよいですか?

私は、句を持つ典型的なSELECTクエリを発行するGUIアプリケーションを持っています。クエリはパラメータ化され、通常、パラメータの内容はエンドユーザによって貼り付けられます。値はテキストファイルなどから読み取られません。メモ編集に貼り付けられます。ここで

は、クエリが...上記のコードで

cmd.CommandText = @"SELECT history_id, emplid, displayname 
        FROM ""MAX_HISTORY_IDS"" 
        WHERE searchname ILIKE :searchname"; 

cmd.Parameters.Add("searchname", PgSqlType.VarChar).Value = "Sievert,Jürgen"; 

で、パラメータ値、Sievert,Jürgenは、名前であることなどをメモ編集ボックス、またはテキスト入力、のうち、解析された変数になりますまた、Postgreの無効なUTF8バイトシーケンスエラーの原因となるこのクエリを引き起こす名前の実際の例です。

ここでは、データベース上のUTF8エンコーディングが問題なく、この種のコンテンツにはかなり標準であると仮定します。ここで何が間違っていますか?このテキストパラメータのエンコーディングはUTF8ではありませんか?どのようにしてこのクエリを動作させることができますか、またはデータベースのエンコーディングは適切ではありませんか?

答えて

1

私はそれを理解しました。私はDotConnect PostgreSQLクライアントライブラリを使用しています。接続文字列では、単にUnicode=Trueを追加するだけでした。これはすべてを機能させるようです。

関連する問題