postgresql 系统.字符串到Macaddr

watbbzwu  于 2022-11-29  发布在  PostgreSQL
关注(0)|答案(1)|浏览(154)

我在使用.NET和PostgreSQL时遇到问题。
我尝试将包含mac地址的字符串保存到PostgreSQL,但我收到以下错误:
“无法写入处理程序类型为MacaddrHandler的CLR类型System.String”
下面是我尝试使用的代码:

NpgsqlBatchCommand command = new NpgsqlBatchCommand("INSERT INTO table (param1,param2,param3) VALUES ($1,$2,$3)")
                {
                    Parameters =
                        {
                            new() {Value = param1},
                            new() {Value = param2, NpgsqlDbType = NpgsqlTypes.NpgsqlDbType.MacAddr8},
                            new() {Value = param3}
                        }
                };

说明:
param2表示字符串,它包含作为字符串的mac地址
我试着改变NpgsqlDbType,但不幸的是,它没有帮助。我也试着在官方文档中检查是否有应该如何做的任何示例,但我找不到任何东西

btxsgosb

btxsgosb1#

MacaddrHandler是一个线索,它是C#类型和postgres类型之间的Map。
A quick google,我们可以看到:

public class MacaddrHandler : NpgsqlSimpleTypeHandler<PhysicalAddress>

所以它很可能Map了一个PhysicalAddress
试试看:

new() {Value = PhysicalAddress.Parse(param2), NpgsqlDbType = NpgsqlTypes.NpgsqlDbType.MacAddr8}

相关问题