【问题标题】:Exception on excuteUpdate执行更新异常
【发布时间】:2011-08-15 10:22:02
【问题描述】:

我遇到了一个例外

com.microsoft.sqlserver.jdbc.SQLServerException: String or binary data would be truncated.  

在下面一行抛出异常:

PrepareStmt.setBinaryStream(1, new ByteArrayInputStream(data), data.length);  
updatePrepareStmt.executeUpdate();  

我正在使用 MS-SQL 数据库。谁能帮我解决这个问题?

我试图插入数据的列的数据类型是 varbinary 并且数据的长度也不大。我只是插入“测试”。

更新
现在我增加了数据类型 varbinary 的大小。达到了 1024,但我现在得到了新的异常:-

com.microsoft.sqlserver.jdbc.SQLServerException:The 从 varbinary 到 BLOB 的转换是 不支持

任何人都可以评论这个异常吗?

【问题讨论】:

  • 在执行更新时,我得到了这个异常 ...非常诗意!
  • 您尝试插入数据的字段的数据类型是什么?
  • 我试图插入数据的列的数据类型是 varbinary
  • 您输入的数据与列的大小不符。增加数据库中列的大小或压缩数据
  • 关于您的更新,com.microsoft.sqlserver.jdbc.SQLServerException:The conversion from varbinary to BLOB is unsupported。使用以前版本的 Oracle,我必须在我的表中运行 Insert 查询(首先创建 BLOB),然后我才能在 Select 之后写入它...

标签: java mysql database jdbc


【解决方案1】:

正如异常消息所说,您的数据似乎大于它应该写入的数据库字段。 data.length 的最大值是多少,您的列的最大长度是多少?

【讨论】:

  • 我试图插入数据的列的数据类型是varbinary,数据的长度也不大。我只是插入“测试”
  • 你能展示完整的准备好的声明吗?如果可能是另一列溢出。
  • 私有 PreparedStatement updatePrepareStmt; updatePrepareStmt = dbConn.getConnection().prepareStatement(s);
【解决方案2】:

增加列容量。如果是varchar(20),则改为varchar(200) 或可以容纳您的数据的东西。

【讨论】:

    猜你喜欢
    • 2011-02-27
    • 1970-01-01
    • 2013-03-23
    • 2010-11-28
    • 2011-08-23
    • 2013-04-02
    • 1970-01-01
    • 1970-01-01
    • 2011-11-11
    相关资源
    最近更新 更多