C# 数据读取器值在调试时重复多次

标签 c# sql sql-server

我正在从 SQL server 表中读取数据,并将相同的值插入到 PostgreSQL\SQL 数据库表中。这是一个数据迁移过程。

问题是 SQL 中的数据是纯文本,但我在调试中看到它在 watch 中多次显示相同的值(visual studio 2015)。

值在 SQL Server 中显示如下:

Value displays in SQL server

visual studio 调试器中的数据显示:

Value displays in the debugger

所有迁移过程都正常,但唯一具有这些类型值的表不会插入 PostgreSQL\SQL 并将抛出异常。

异常(exception):

{"22021: invalid byte sequence for encoding \"UTF8\": 0x00"}

堆栈跟踪:

Exception

我不明白这里的确切问题。任何人都可以帮助我了解上述问题的原因和解决方案吗?

最佳答案

我怀疑 SQL Server 中显示的值只是停在 Unicode 代码点 0 (U+0000),这是 Windows 控件默认执行的操作。看起来 Postgres 根本不接受这一点。

我相信你应该:

  • 尝试弄清楚为什么您在 SQL Server 中获得了这样的值(value)。 (这很可能是执行插入的任何代码中的错误。)
  • 确定您想要的数据。如果您确实需要 U+0000 之后的数据,则需要确定这是否意味着更多行、不同的分隔符等。
  • 要么修复 SQL Server 中的数据(例如,通过在每个字段中的 U+0000 之前截断)将截断作为迁移的一部分执行(取决于如何你正在做迁移)。

关于C# 数据读取器值在调试时重复多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55806132/

相关文章:

c# - 使用C#更新多个sql表中的相同列

c# - UWP App 在 Windows Phone 上的布局很奇怪

c# - 固定标题 GridView ASP.NET

c# - WCF 使用、关闭和扩展

php - 插入行后如何从 MySQL 表返回值?

mysql选择不在时间段内的行(由两列定义)

.net - .NET 中的 SQL 十进制等效项

sql - 串联查询

c# - Entity Framework 代码优先方法连接字符串配置

c# - 使用 LIST INSERT 到存储过程