首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用MySQL驱动程序插入和选择JDBC类型

使用MySQL驱动程序插入和选择JDBC类型
EN

Stack Overflow用户
提问于 2019-01-14 10:23:35
回答 1查看 1.5K关注 0票数 2

我正在使用JDBC驱动程序和ResultSet读写mysql JSON类型。如何将ResultSet中的JSON类型提取为字符串JSON,以便用于java程序?

代码语言:javascript
复制
mysql> set names UTF8MB4; // so that json values can be inserted using jdbc driver otherwise it was complaining of binary type

Java代码(伪代码):

代码语言:javascript
复制
String myjsonString = "{x: y}"; // assume this is proper
conn.getPreparedStatement("insert into col_json values (myjsonString)");


rs = conn.getStatement("select col_json from table_json_test");

String myorig_json = rs.getString("col_json");

myorig_json将以如下字符串的形式出现:

代码语言:javascript
复制
"base64:type15:rO0ABXNyABdqYXZhLnV0aWwuTGlua2VkSGFzaE1hcDTATlwQbMD7AgABWgALYWNjZXNzT3JkZXJ4
cgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4
cD9AAAAAAAAMdwgAAAAQAAAAAXQABXJlZmlkdAAgZWI3ODkzZWVjMDU5NGNhMjlhYjY1OTJjMjFj
MjIwNWZ4AA=="

期望是"{x: y}"

EN

回答 1

Stack Overflow用户

发布于 2019-07-12 11:02:47

MySQL中的JSON数据类型是一种特殊类型,在内部存储为二进制对象。这就是为什么不能以字符串的形式从数据库中获取值的原因-- JDBC驱动程序将获取二进制值的内容,并尝试将其作为String读取,从而给出所看到的垃圾。

JDBC驱动程序根本不支持JSON对象类型。相反,您有两个选择:

  1. 将您的JSON存储在TEXT字段中-然后可以使用getString读取它,但是您必须自己解析它。
  2. 使用MySQL的特殊JSON查询语言构建查询,这意味着ResultSet包含从JSON读取并为您转换的数据。例如,具有以下查询:
代码语言:javascript
复制
SELECT col_json->>'$.x' AS x FROM <table>

将给您一个ResultSet,其中包含:

代码语言:javascript
复制
+----+
|  x |
+----+
|  y |
+----+

您可以使用resultSet.getString(1)提取值。

关于如何在MySQL中查询JSON字段,有很多教程。这里有一个很简单的开头:http://www.mysqltutorial.org/mysql-json/

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54179604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档