我正在尝试使用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[]")
我无法找出我做错的地方。
答案 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)
) {