如何在Npgsql中使用hstore列类型?

时间:2013-03-28 14:12:35

标签: postgresql npgsql hstore

我有一个包含以下架构的表:

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

我想使用带参数的NpgsqlCommand对象来检索和存储我的应用程序中的帐户数据。我需要为NpgsqlParameter使用哪种DbType?枚举NpgsqlDbType没有hstore的值。我可以使用DictionaryHashTable作为NpgsqlParameter对象的值吗?

当我使用JSON列时,我可以创建类型为NpgsqlDbType.Text的参数,使用类似JSON.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)

我传递给data参数的字符串如下所示:

  

'key1 => “value1”,key2 => “值2”'

1 个答案:

答案 0 :(得分:2)

谢谢你,弗朗西斯科!我在日志中看到,当它们传递给PostgreSQL时,字符串开头和结尾的单引号(')被转义。当我通过

  

key1 => “value1”,key2 => “VALUE2”

相反,我可以将数据插入到hstore列中。