3

次のスキーマを持つテーブルがあります。

CREATE TABLE account
(
  id serial primary key,
  login varchar(40) not null,
  password varchar(40) not null,
  data hstore
);

NpgsqlCommandパラメータを持つオブジェクトを使用して、アプリケーションからアカウント データを取得および保存したいと考えています。にはどの DbType を使用する必要がありNpgsqlParameterますか? 列挙NpgsqlDbType型に hstore の値がありません。オブジェクトの値としてDictionaryorを使用できますか?HashTableNpgsqlParameter

JSON 列を使用すると、 type のパラメーターを作成し、NpgsqlDbType.TextJSON.Net などのライブラリを使用してオブジェクトを JSON 文字列にシリアル化し、そのような SQL ステートメントを送信できます。

INSERT INTO account (login, password, data) VALUES (:login, :password, :data::json)

残念ながら、これは hstore 列では機能しません。これを行おうとすると、構文エラーが発生します。

INSERT INTO account (login, password, data) VALUES (:login, :password, :data::hstore)

データ パラメータに渡す文字列は次のようになります。

'key1 => "value1", key2 => "value2"'

4

1 に答える 1

2

ありがとう、フランシスコ!文字列の先頭と末尾のシングル クォーテーション (') が PostgreSQL に渡されるときにエスケープされることをログで確認しました。私が通過するとき

キー1 => "値1"、キー2 => "値2"

代わりに、hstore 列にデータを挿入できます。

于 2013-03-30T16:28:45.347 に答える