我有以下架構表:如何在Npgsql中使用hstore列類型?
CREATE TABLE account
(
id serial primary key,
login varchar(40) not null,
password varchar(40) not null,
data hstore
);
我想用一個NpgsqlCommand
對象與參數檢索和帳戶數據從我的應用程序商店。我必須使用哪種DbType作爲NpgsqlParameter
?枚舉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)
我傳遞給數據參數的字符串看起來是這樣的:
「鍵1 =>‘值1’鍵2 =>「值2 「'
你得到的錯誤是什麼?儘管Npgsql中沒有hstore本機數據類型,但如果您可以將hstore數據作爲字符串處理,則可以嘗試DbType.Object和/或NpgsqlDbType.Text。另外,啓用Postgresql Server日誌,或者打印NpgsqlException.ErrorSql屬性,以便我們可以看到Npgsql將哪個查詢發送到服務器。我希望它有幫助。 –