【发布时间】:2016-01-27 22:24:32
【问题描述】:
在我们的产品中,在一个 java 类中,我们以字符串格式接收 Blob,我们需要检查这个传入的 blob 是否是十六进制字符串(Blob 可以是任意大小)并根据布尔结果我们将进一步决定Blob 处理(因为在我们的例子中MS-SQL 返回十六进制,MySQL,Oracle 返回纯Blob)。使用Pattern、Matcher 和matches() 来检查传入的Blob 是否是hex 字符串是一种好习惯吗?
以下是我的代码 sn-p :
public static boolean isHexadecimal(String blobdata) {
Pattern p = Pattern.compile("[0-9a-fA-F]+");
Matcher m = p.matcher(blobdata);
if (m.matches()) {
return true;
}
return false;
}
【问题讨论】:
-
其他选项是什么?如果数据库返回根本不是字符串的“纯 Blob”,不是吗?
-
@Thilo 如果 blob 包含大量数据,它(上面的代码 sn-p)的执行速度会变慢吗?
-
请说明“纯 Blob”的形式以及您如何从数据库中检索到它。
-
@Thilo ""pure blob" 的意思是,它与返回十六进制字符串的 MS-SQL 不同,我们通过对第三方应用程序的简单选择查询来检索它,然后我们将其接收到字符串的形式。
-
我真的不明白您希望在
blobdata中收到哪些不同类型的Strings。你能举一个String代表“纯blob”的例子吗?
标签: java mysql sql-server oracle