【问题标题】:Inserting c# char variable data to ADO Char(1) field [duplicate]将c#char变量数据插入ADO Char(1)字段[重复]
【发布时间】:2017-04-16 07:53:53
【问题描述】:

在转换过程中,我的 char 值出现了这个相当奇怪的小数加法。

尝试了以下转换,但十进制值只是继续与 char 一起分配给变量:

  1. Convert.ToChar(Console.ReadLine());
  2. Console.ReadLine().ToString()[0];
  3. Console.ReadKey().KeyChar;

包含 char 字段的对象:

架构:

Error @ DAL : System.Data.SqlClient.SqlException: '字符串或二进制数据将被截断。

使用:.NET 标准库

【问题讨论】:

  • 通过here得到问题的解决方案!

标签: c#


【解决方案1】:

您的 char 仅显示其前面的十进制值。所以十进制值是字符的 ASCII 值。您可以通过打印该值轻松地对此进行测试,并且您会看到它仅包含该字符。如果你想在调试时测试它,我建议在监视窗口中使用employeeGrade.ToString()

char 甚至不可能保存值 90'Z',因为它将是多个字符。您可以像这样在 ASCII 表中查看 ASCII 值:http://ascii.cl/

【讨论】:

  • 有没有办法避免那个十进制值?我将值发送到我的 DAL 以将其添加到我的数据库中,但数据库只是拒绝该值
  • 数据库中的列是字符吗?因为它实际上应该只保存字符(这里是“Z”)。
  • 或者您的数据库可能同时显示 ASCII 值和字符,但实际上只包含字符本身。您也可以通过再次获取该值并打印它来测试它。
  • @Manti_Core :它的十进制表示仅在调试器中显示,以帮助您识别它是哪个字符(请参阅DebuggerDisplay attribute)。当你在代码中使用它时,它只是一个Z,所以你的数据库拒绝它的原因与其他东西有关。
  • char 字段是 employee 对象的一部分,是的,db 中的字段也是 char,我可以检索和显示使用 List 的记录
【解决方案2】:

对等级使用字符串数据类型

public string Grade { get; set; }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-27
    • 1970-01-01
    • 2012-01-16
    • 2019-04-09
    • 2023-03-08
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多