【问题标题】:How to use Java ResultSet to convert the results to a String如何使用 Java ResultSet 将结果转换为字符串
【发布时间】:2018-08-20 22:37:36
【问题描述】:

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

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

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

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

感谢您的帮助。

另外,我早先做了这个post,它提供了关于我在做什么以及为什么做的更多信息。

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

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

【问题讨论】:

标签: java mysql resultset


【解决方案1】:

对于日期,使用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)将日期转字符串写入生成的SQL文件中。

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

【讨论】:

  • 并确保输出文件的字符编码与数据库中的匹配。
  • 确实匹配。因此,如果我这样做,它将适用于所有可能的 sql 数据类型吗?
  • 它不适用于所有可能的 SQL 类型。您必须小心地将每种可能的类型转换为在 SQL 语句中识别为类型的字符串。
  • @Forseth11 Re“它是否适用于所有可能的 sql 数据类型”,您现在正在移动原始问题上的目标帖子,该问题明确询问“我该怎么做这与 Blob 和日期"。针对新问题提出新帖子。
  • @Forseth11 然后您应该更新 OP 以明确您的问题是什么,因为有人已经费尽心思回答您提出的实际问题而您没有接受他们的回答。根据您在 OP 中提出的要求,没有人会给出符合您新要求的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-24
  • 1970-01-01
  • 2010-12-13
  • 2018-07-24
  • 1970-01-01
  • 1970-01-01
  • 2020-04-06
相关资源
最近更新 更多