如何使用 NpgSql 将字符串数组插入 Postgresql 列
How to use NpgSql to insert an array of Strings into a Postgresql column
我正在尝试使用 .NET 将字符串数组插入到列中。它是 VB.NET 中的遗留应用程序,但我可以轻松地从 C# 转换。这是我尝试过的:
p = New NpgsqlParameter("company_address", NpgsqlTypes.NpgsqlDbType.Array + NpgsqlTypes.NpgsqlDbType.Text)
p.Value = data.company_address ' <--- array of strings
cmd.Parameters.Add(p)
我遇到上述错误 "Unable to cast object of type 'System.String[]' to type 'System.IConvertible'",或者我尝试使用以下格式作为值:'{"string1","string2","string3"}'
但后来我得到一个错误 "Input string was not in the proper format"。我也尝试过同样的错误:ARRAY['string1','string2','string3']
那么数组是否总是必须转换为某种格式的字符串,或者 NpgSqlParameter 能否以某种方式用于接受字符串数组?
字段company_address定义为String() Npgsql版本为2.2
谢谢
您需要执行 NpgsqlTypes.NpgsqlDbType.Array | NpgsqlTypes.NpgsqlDbType.Text
(按位或),而不是 NpgsqlTypes.NpgsqlDbType.Array + NpgsqlTypes.NpgsqlDbType.Text
。
另一种选择是完全省略 NpgsqlDbType 并让 Npgsql 推断 - 当它看到字符串数组时,它会自动发送正确的类型。
我正在尝试使用 .NET 将字符串数组插入到列中。它是 VB.NET 中的遗留应用程序,但我可以轻松地从 C# 转换。这是我尝试过的:
p = New NpgsqlParameter("company_address", NpgsqlTypes.NpgsqlDbType.Array + NpgsqlTypes.NpgsqlDbType.Text)
p.Value = data.company_address ' <--- array of strings
cmd.Parameters.Add(p)
我遇到上述错误 "Unable to cast object of type 'System.String[]' to type 'System.IConvertible'",或者我尝试使用以下格式作为值:'{"string1","string2","string3"}' 但后来我得到一个错误 "Input string was not in the proper format"。我也尝试过同样的错误:ARRAY['string1','string2','string3']
那么数组是否总是必须转换为某种格式的字符串,或者 NpgSqlParameter 能否以某种方式用于接受字符串数组?
字段company_address定义为String() Npgsql版本为2.2
谢谢
您需要执行 NpgsqlTypes.NpgsqlDbType.Array | NpgsqlTypes.NpgsqlDbType.Text
(按位或),而不是 NpgsqlTypes.NpgsqlDbType.Array + NpgsqlTypes.NpgsqlDbType.Text
。
另一种选择是完全省略 NpgsqlDbType 并让 Npgsql 推断 - 当它看到字符串数组时,它会自动发送正确的类型。