我有一个包含以下架构的表:
CREATE TABLE account
(
id serial primary key,
login varchar(40) not null,
password varchar(40) not null,
data hstore
);
我想使用带参数的NpgsqlCommand
对象来检索和存储我的应用程序中的帐户数据。我需要为NpgsqlParameter
使用哪种DbType?枚举NpgsqlDbType
没有hstore的值。我可以使用Dictionary
或HashTable
作为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”'
答案 0 :(得分:2)
谢谢你,弗朗西斯科!我在日志中看到,当它们传递给PostgreSQL时,字符串开头和结尾的单引号(')被转义。当我通过
key1 => “value1”,key2 => “VALUE2”
相反,我可以将数据插入到hstore列中。