【问题标题】:exception with nvarchar - data was truncated while converting from one data type to anothernvarchar 异常 - 从一种数据类型转换为另一种数据类型时数据被截断
【发布时间】:2010-12-06 00:23:23
【问题描述】:

我在将数据输入数据库的几列时遇到了一些麻烦,所有列都是 nvarchar 类型。我得到:

从一种数据类型转换为另一种数据类型时数据被截断。函数名称(如果已知)

DBConn.Open();

cmd = new SqlCeCommand("INSERT INTO [Employee Table] VALUES ('"+ social + "','" +
        first + "','" + last + "','" + mid + "','" + address + "','" + phone + "',"
            + "'Employee'" + ",'" + city + "','" + state + "','" + zip + "','" + email + "','" + userName + "')", DBConn);
cmd.ExecuteNonQuery();

关于如何避免截断/转换错误的任何建议?

【问题讨论】:

  • 不要这样做。使用参数化查询。请。其他一切都只是要求 SQL 注入。
  • 如果你正在做一个课堂演示,SQL 注入更为重要。 不要培训另一代开发人员连接 SQL。
  • 需要更多信息才能准确了解问题所在;您能否将 CREATE 模式添加到问题中,以便我们可以查看所有 [Employee Table] 列的详细信息?
  • 您使用的是哪个版本的 SQL Server?我在sys.messages 中看不到该错误,并且通常期望 Msg 8152“字符串或二进制数据将被截断”。你在用ce版吗?
  • 我已经开始使用参数,但我仍然无法连接到数据库。我用的是CE版,有问题吗?

标签: c# sql-server sql-server-ce


【解决方案1】:

您的NVARCHAR 不够大,无法容纳您的字符串。

【讨论】:

    【解决方案2】:

    尝试使用参数

    SqlParameter param = new SqlParameter("Field", SqlDbType.NVarChar)    
    Param.Value = Field;
    

    【讨论】:

      【解决方案3】:

      原因是列的长度很短。所以该值长于表格列的最大宽度。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-05-27
        • 1970-01-01
        • 2011-02-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多