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 的值。我可以使用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 => "value2"'

4

1 回答 1

2

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

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

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

于 2013-03-30T16:28:45.347 回答