问题描述

今天在读取表的注释信息(COMMENT)时,发现返回的REMARKS字段返回居然是null.

以下是代码示例:

DatabaseMetaData meta = this.pConnection.getMetaData();

// 获取所有表信息

ResultSet resultSet = this.meta.getTables(this.catalog, tableSchema, pattern, this.tableTypes);

while (resultSet.next()) {

Table table = new Table();

# 返回null

String comment=resultSet.getString("REMARKS");

}

resultSet.close();

原因分析

google找了半天,总算知道原因:

Connector/J 5.0.0以后的版本有一个名为useInformationSchema的数据库连接参数,

在默认连接参数情况下,useInformationSchema=false,导致Connection.getMetaData()方法返回的DatabaseMetaData 对象是com.mysql.jdbc.DatabaseMetaData,而不是com.mysql.jdbc。DatabaseMetaDataUsingInfoSchema,

DatabaseMetaDataUsingInfoSchema是DatabaseMetaData是的子类,看名称就能联想到是通过 INFORMATION_SCHEMA 数据库获取数据库的metadata,可以正确返回table_comment字段。

下面是useInformationSchema的官方说明

useInformationSchema

When connected to MySQL-5.0.7 or newer, should the driver use the INFORMATION_SCHEMA to derive information used by DatabaseMetaData?

而父类DatabaseMetaData并不一定能正常返回table_comment字段.

解决方法

解决的方法也很简单:

数据库连接时设置useInformationSchema=true

如何设置数据库连接参数呢?有两个途径

方法一:java代码实现

# 将所有参数装入java.util.Properties 对象

Properties props = new Properties();

props.setProperty("username",this.username);

props.setProperty("password",this.password);

props.setProperty("useInformationSchema", "true");

# 调用getConnection(String,Properties)方法创建连接

this.pConnection = java.sql.DriverManager.getConnection(this.url, props);

方法二:连接url参数

直接将参数加到数据库连接url,如下代码中在数据连接url中添加了两个参数characterEncoding=utf8和useInformationSchema=true

String url="jdbc:mysql://localhost:3306/test?characterEncoding=utf8&&useInformationSchema=true"

this.pConnection = DriverManager.getConnection(this.url, this.username,this.password);

参考资料

jdbc mysql user_tab_comments_mysql/jdbc:设置useInformationSchema=true读取表注释信息(table_comment)...相关推荐

  1. mysql/jdbc:设置useInformationSchema=true读取表注释信息(table_comment)

    问题描述 今天在读取表的注释信息(COMMENT)时,发现返回的REMARKS字段返回居然是null. 以下是代码示例: DatabaseMetaData meta = this.pConnectio ...

  2. jdbc mysql user_tab_comments_MySQL学习(五)——使用JDBC完成用户表CRUD的操作

    通过案例我们发现"获得连接"和"释放资源"两次代码将在之后的增删改查所有功能中都存在,开发中遇到此种情况,将采用工具类的方法进行抽取,从而达到代码的重复利用. ...

  3. 连接mysql错误:create connection SQLException, url: jdbc:mysql://localhost:3306/db2021?useUnicode=true

    具体报错如下: java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized or represents ...

  4. printk在应用层的设置方式及读取内核打印信息的方法

    如果 printk 中没有加调试级别,则使用默认的调试级别.注意,调试级别和格式化字符串之间没有逗号.当前控制台的各打印级别可以通过下面的命令来查看. # cat /proc/sys/kernel/p ...

  5. mysql随机显示记录_MySQL随机读取表中记录

    order by rand()来实现 select * from table order by rand(); 内存临时表 order by rand() 是一般通过内存临时表排序,可以通过执行计划e ...

  6. mysql数据库的注释语句是_coding++ :MySQL 使用 SQL 语句查询数据库所有表注释已经表字段注释...

    1.要查询数据库 "mammothcode" 下所有表名以及表注释 /*查询数据库 'mammothcode' 所有表注释*/SELECT TABLE_NAME,TABLE_COM ...

  7. mysql使用sql语句查询数据库所有表注释已经表字段注释

    场景: 1. 要查询数据库 "mammothcode" 下所有表名以及表注释 /* 查询数据库 'mammothcode' 所有表注释 */ SELECT TABLE_NAME,T ...

  8. mysql查字段的备注_Mysql 查看表注释或字段注释

    查看所有表的注释 SELECT table_name 表名, table_comment 表说明 FROM information_schema.TABLES WHERE table_schema = ...

  9. jdbc mysql emoji 读取_mysql+jdbc的emoji异常问题

    就是mysq支持emoji编码的问题,我已经按照这篇文章:mysql/Java服务端对emoji的支持所说的办法升级mysql和connector但问题还是没解决,希望高手指点. mysql 版本:5 ...

最新文章

  1. 标准K-means算法的缺陷、K-mean++初始化算法、初始化算法步骤、Kmeans++算法实现
  2. SimpleDateFormat和DateFormat类不是线程安全的。
  3. QT乱码总结7.编码测试和总结二
  4. java xml 序列化_java-序列化为XML时忽略父类
  5. 一个月学会Python的Quora指南和资料放送
  6. 三菱数据移位指令_三菱plc移位指令用法详解
  7. django中URL常用配置方法
  8. sql创建表主键gui_在SQL Server中使用主数据服务快速创建最终用户可以维护的GUI
  9. 1.Linux性能诊断 --- 入门命令100条
  10. linux shell 脚本 入门到实战详解[⭐建议收藏!!⭐]
  11. 天堂2服务器自动停止,为什么我一进天堂2就与服务器连接中断??/
  12. 《分布式机器学习:算法、理论与实践》
  13. aect17定义_AECT-05定义与94定义的区别?
  14. 跟小静读CLR via C#(06)- 构造器
  15. C++ delete陷阱
  16. (转)TSQL和PLSQL的区别
  17. vue大屏(驾驶舱)实现数字滚动
  18. unity 2D游戏开发 制作帧动画的两种方法
  19. 山西大学c语言考试题,山西大学《876数据结构+C程序设计》考研题库详解
  20. Cris 的Python日记(五):Python 数据结构之元祖,字典和集合

热门文章

  1. .net持续集成cake篇之cake介绍及简单示例
  2. Hello Kubernetes快速交互实验手册
  3. .NET Core 3.0之深入源码理解Kestrel的集成与应用(一)
  4. Build 2019 上微软的开源动作有点不一样
  5. surging 微服务引擎 1.0 正式发布
  6. 使用PerfView监测.NET程序性能(三):分组
  7. Golang的CSP很酷?其实.NET也可以轻松完成
  8. .NET 文档数据库 RavenDB 4.0 发布
  9. ASP.NET Core Web 资源打包与压缩
  10. 微服务的概念——《微服务设计》读书笔记