如何使用 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')
我正在创建一个程序来远程连接到 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)
.
对于 blob,使用 ResultSet.getBinaryStream()
将流写入 byte[]
数组。然后遍历数组,生成一个每字节两位数字的十六进制字符串。最后将字符串放入输出 SQL as INSERT INTO table (the_blob_column) VALUES (x'89A099D153EF')