如何使用 Java ResultSet 将结果转换为 String

How to use Java ResultSet to convert the results to a String

我正在创建一个程序来远程连接到 MySQL 服务器并创建一个没有控制台访问权限的 .sql 文件。我正在手动执行它以跟踪完成的进度。

.sql 转储文件中,有一行是 INSERT INTO。我可以很容易地使用数字和字符串对象来完成这项工作,但是我如何才能使用 Blob 和日期来完成这项工作?

有什么方法可以使用 set.getObject(column); 并将其转换为可以放入 .sql 文件中的字符串?

如果不是,我可以使用 set.getMetaData().getColumnType(column) 然后与众多数据类型中的每一种进行比较吗?然后,如何将其转换为字符串以放入文件中?

感谢您的帮助。

另外,我之前做了这个 ,它提供了关于我在做什么以及为什么做的额外信息。

编辑:这被标记为重复,但另一个答案甚至没有回答我的问题。这解释了如何使用文本数据类型来做到这一点。我需要知道如何使用 BLOBS、日期和所有其他 SQL 数据类型。

编辑 2:我需要一个适用于所有数据类型的解决方案,而不仅仅是提到的那些。

日期使用 ResultSet.getDate(),然后使用 SimpleDateFormat 和 yyyy-MM-dd HH:mm:ss 模式转换为字符串。或 ResultSet.getTimestamp() 并根据以毫秒为单位的时间戳时间创建一个新日期。然后用CAST('2018-03-12 14:15:16' AS DATETIME)CAST('2018-03-12 14:15:16' AS DATE).

将date-to-string写入生成的SQL文件

对于 blob,使用 ResultSet.getBinaryStream() 将流写入 byte[] 数组。然后遍历数组,生成一个每字节两位数字的十六进制字符串。最后将字符串放入输出 SQL as INSERT INTO table (the_blob_column) VALUES (x'89A099D153EF')