如何使用 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 推断 - 当它看到字符串数组时,它会自动发送正确的类型。