我有一个具有以下架构的表:
CREATE TABLE account
(
id serial primary key,
login varchar(40) not null,
password varchar(40) not null,
data hstore
);
我想使用带有参数的 NpgsqlCommand
对象来检索和存储来 self 的应用程序的帐户数据。我必须为 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)
我传递给数据参数的字符串如下所示:
'key1 => "value1", key2 => "value2"'
最佳答案
谢谢你,弗朗西斯科!我在日志中看到,字符串开头和结尾的单引号(')在传给PostgreSQL的时候都被转义了。当我经过时
key1 => "value1", key2 => "value2"
相反,我可以将数据插入 hstore 列。
关于postgresql - 如何在 Npgsql 中使用 hstore 列类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15684091/