1

有没有办法获取保存在列的数据库中的实际编码字符串DataType Bytea。因为当获取记录时,C#它会返回System.Byte[]我不想要的结果。我想要保存在该列中的数据

E'\\\142\\\247\\\依此类推,直到数据结束。

我会感谢你的支持

当我通过查询数据时

SELECT tpl::TEXT from Cards where ecode="xyz";

我收到以下错误

错误:无法将类型 bytea 转换为文本
Line1:从卡片中选择 tpl::TEXT

谢谢

像这样

普通查询

在此处输入图像描述

正如您所看到的,Bytea 列显示了System.Byte[]哪个被我的应用程序覆盖,因为 C# 中的代码将数据存储在DataTable列中,因为System.Byte[]在更新数据时我没有对其进行解码和更新。

我在查询数据时使用 Navicat premium

像这样

INSERT INTO "public"."cards" ("ecode", "tpl") VALUES ('4210149888659', E'System.Byte[]');

INSERT INTO "public"."cards" ("ecode", "tpl") VALUES('3650257637661',E '\\247\\377\\001\\021\\340\\000\\230\\000\\002U\\000e\\000\\362\\000\\002-\\000\\253\\000p\\000\\002\\207\\000~\\000g\\000\\002\\215\\000{\\000\\317\\000\\002\\334\\000h\\000\\222\\000\\001|\\000\\004\\001U\\000\\002\\202\\000K\\000\\201\\000\\001\\000\\000\\204\\000\\241\\000\\001w\\000\\213\\000\\305\\000\\002\\021\\000V\\000\\237\\000\\002L\\001=\\001\\364\\000\\001X\\001"\\001\\313\\000\\002J\\000\\010\\001\\324\\000\\001\\370\\000\\037\\001J\\000\\002;\\0017\\000\\202\\000\\002\\300\\000\\317\\0007\\000\\002\\215\\000[\\000\\004\\011\\017\\007\\012\\005\\015\\014\\006\\016\\012\\007\\010\\005\\005\\007\\011\\010\\001\\004\\012\\017\\002\\003\\010\\012\\004\\010\\005\\003\\013\\014\\005\\017\\007\\003\\010\\003\\001\\011\\004\\012\\006\\020\\011\\005\\013\\015\\010\\002\\004\\005\\010\\007\\011\\012\\000\\002\\002\\020\\012\\003\\015\\000\\005\\002\\017\\003\\000\\006\\016\\020\\010\\017\\014\\000\\001\\012\\001\\010\\011\\002\\004\\007\\010\\000\\002\\006\\011\\007\\003\\020\\011\\003\\001\\005\\011\\000\\007\\002\\012\\002\\000\\020\\000\\016\\004\\017\\004\\003\\011\\017\\000\\003\\004\\000\\001\\007\\017\\002\\001\\017\\014\\006\\002\\016\\015\\011\\015\\006\\014\\016\\010\\020\\013\\000\\003\\006\\015\\002\\005\\020\\015\\016\\015\\004\\001\\003\\015\\010\\010\\006\\014\\002\\007\\020\\014\\011\\001\\000\\014\\010\\003\\016\\001\\015\\017\\020\\013\\006\\013\\016\\013\\011\\001\\014\\013\\004\\013\\002\\013\\001\\000'
);
4

1 回答 1

1

你不能只转换它,因为 PostgreSQL 不能保证它可以安全地转换。您能做的最好的是将转义形式转换为字符串,这可能不是您想要的。请记住,由于 bytea 是二进制数据,PostgreSQL 无法确定输出的字符串是合法的。例如,您可以在 UTF-8 字符串中嵌入空值,如果您不小心,可能会导致缓冲区溢出。

这是应该在客户端完成的事情,您应该假设数据是二进制的,不一定是有效的字符串。如果要存储字符串,请存储文本字段,而不是 bytea。

于 2013-12-08T10:37:26.617 回答