迁移数据库时如何确定列是Blob

时间:2014-10-30 09:47:23

标签: java mysql blob

我正在尝试使用Java将数据从一个数据库迁移到另一个数据库。除Blob类型外,所有其他数据类型都会成功迁移。

以下是我检查数据类型并迁移它们的方法。

private String getValue(String value, String type, int i){
        StringBuilder columnValue = new StringBuilder("");
        if(type.equals("java.lang.String") || type.equals("java.sql.Timestamp") || type.equals("java.lang.Blob")){
            if(i== (columnNames.size()-1))
                columnValue.append("'"+value+"'"); 

注意:在type我将Blob作为[B,我知道Blob已作为Bytes Array传递,因此我尝试检查像数组一样,像这样

type.getBytes().equals("byte[]")

我无法找出我做错的地方。

1 个答案:

答案 0 :(得分:3)

正确的解决方案取决于您为type创建值的方式。如果您使用rs.getObject(col).getClass().getName(),则此比较将起作用:

type.equals("[B")

byte[].class.getName()会得到相同的结果。为了保护您免受拼写错误,我建议您将类型传递为Class<?>。这允许您使用isAssignableFrom()检查类型:

if( type.isAssignableFrom(String.class)
    || type.isAssignableFrom(java.sql.Timestamp.class)
    || type.isAssignableFrom(byte[].class)
) {