【问题标题】:Convert char[] to BLOB in Java在 Java 中将 char[] 转换为 BLOB
【发布时间】:2014-07-27 13:40:35
【问题描述】:

我正在尝试创建一种将字符数组 (content) 转换为 BLOB 并相应地更新数据库系统的方法。到目前为止,这是我的代码:

public void setFileContent(String fileName, char[] content) {

        // BLOB b = char[] content

        String sql = "UPDATE tbl_blob SET file_content=??? WHERE file_name=\"" + fileName + "\"";

}

要将字符数组转换为 BLOB,我需要做什么?

非常感谢。

【问题讨论】:

    标签: java sql binary char blob


    【解决方案1】:

    即使使用 CLOB 列来存储文本会更好,但也完全可以使用 BLOB 列。由于 BLOB 列存储二进制数据(与 CLOB 存储文本相反),因此您必须就编码达成一致。

    假设您将使用 UTF-8 对文本进行编码,您可以使用 PreparedStatement 并使用如下 setter 方法设置新值和选择标准:

    PreparedStatement pstat = 
        conn.prepareStatement("UPDATE tbl_blob SET file_content=? WHERE file_name=?");
    
    pstat.setBlob(1, new ByteArrayInputStream(new String(content).getBytes("UTF-8")));
    pstat.setString(2, myFileName);
    pstat.executeUpdate();
    

    【讨论】:

    • 我得到以下异常;线程“主”java.lang.AbstractMethodError 中的异常:com.mysql.jdbc.ServerPreparedStatement.setBlob(ILjava/io/InputStream;)V
    • 这意味着您使用的是旧版本的 MySQL JDBC 驱动程序。可以更新到新版本吗?
    • 我使用的驱动是v3.1.14;最新的版本是什么?
    • 当前版本是5.1.30,为什么不直接查看下载页面而不是在这里询问呢?
    • 当我意识到我已经发送了评论 xp 抱歉
    【解决方案2】:

    有类似 BLOB 的东西,看看这个帖子,也许对你有帮助。

    Blob to string and string to blob

    但您也可以将 char[] 转换为 String,然后转换为 byte[] 以将其写入 BLOB

    【讨论】:

    • 我能不能把char[]转换成String,再转换成byte[]数组,然后用它来制作和保存BLOB?
    • 你为什么首先使用 blob?如果我没看错,您尝试将 char[] 保存在数据库中,为什么不能使用 BLOB 的 varchar?
    • 我正在实施的系统是这样设计的;我应该问一下我们是否可以改变它。
    • 所以想法是将char[]转换为String,然后使用该String创建BLOB?
    • 我在 java 中发现了一个带有 blob 的东西,我用链接编辑了我的答案。
    猜你喜欢
    • 2012-08-24
    • 2011-01-26
    • 2013-08-01
    • 2014-05-02
    • 1970-01-01
    • 2021-05-25
    • 2010-09-22
    • 2018-07-28
    相关资源
    最近更新 更多