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

问题描述

今天在读取表的注释信息(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);

参考资料

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/297384.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL Server返回当前实例系统日期和时间的函数

下面列举出SQL Server返回实例系统日期和时间的函数,除了ANSI标准函数CURRENT_TIMESTAMP在应用时无需在函数后多加一对空的小括号"()"外,其余均需。 从返回的数据类型"DATETIME2"就可以知道,后面三个函数是SQL Server 20…

培养沙雕要从娃娃抓起

1 培养沙雕要从娃娃抓起▼2 好了好了你们两个可以去洗发店门口上班了▼3 毛绒版俄罗斯方块纵享丝滑▼4 我还以为会有令人期待的被打环节▼5 小蜘蛛你好我是唐僧,请问我可以跟你回盘丝洞吗▼6 吃冰淇淋讲究直接上手▼7 在等奶茶的美团小哥我也想像他一样出门荡…

详解Ubuntu for Android:Thin Client

原文地址:http://blog.csdn.net/ce123/article/details/7291445 详解Ubuntu for Android:Thin Client 一、Ubuntu for Android的定义 在移动终端性能日益强大、多核处理器基本普及的现在,将通用的Ubuntu操作系统与Android系统进行亲密的整合&…

Dapr + .NET 实战(九)本地调试

前几节开发Dapr应用程序时,我们使用 dapr cli 来启动dapr服务,就像这样:dapr run --dapr-http-port 3501 --app-port 5001 --app-id frontend dotnet .\FrontEnd\bin\Debug\net5.0\FrontEnd.dll如果你想要通过dapr调试服务呢?在…

javadoc文档的生成方法_[springboot 开发单体web shop] 4. Swagger生成Javadoc

Swagger生成JavaDoc在日常的工作中,特别是现在前后端分离模式之下,接口的提供造成了我们前后端开发人员的沟通成本大量提升,因为沟通不到位,不及时而造成的[撕币]事件都成了日常工作。特别是很多的开发人员不擅长沟通,…

15个IT技术人员必须思考的问题

行内的人自嘲是程序猿、屌丝和码农,行外的人也经常拿 IT 人调侃,那么究竟是 IT 人没有价值,还是没有仔细思考过自身的价值? 1. 搞 IT 的是屌丝、码农、程序猿? 人们提到 IT 人的时候,总会想到他们呆板、不解…

mysql innodb表损坏_MySQL数据库INNODB表损坏修复处理过程分享

##状况描述突然收到MySQL报警,从库的数据库挂了,一直在不停的重启,打开错误日志,发现有张表坏了。innodb表损坏不能通过repair table 等修复myisam的命令操作。现在记录下解决过程,下次遇到就不会这么手忙脚乱了。处理…

20幅扎心漫画,道尽无数人的人生!30万网友:这简直是在偷窥我生活...

全世界只有3.14 % 的人关注了爆炸吧知识每个人在这世界上都是独特的个体但我们常常在很多方面把生活过得很类似在ins上,名叫Sanesparza的博主就把生活中的各种细节通过漫画的形式表达引来31万网友围观许多人纷纷表示:这不就是我吗!太扎心了&a…

多种方法解决Exchange 2010 EMC批量启用邮箱之后出..

平时大家在做Exchange 项目的时候都是需要批量导入AD账户和批量启用AD账户的邮箱,但是有一个比较奇怪的问题是当你使用Exchange 2010 EMC来批量启用邮箱之后会出现乱码问题,并且邮箱用户不能发送和接收电子邮件,那么该如何处理乱码问题呢?不要着急,其实有3种方法可以处理Excha…

聊聊横向领导力

背景与人合作绝对是世界上最难的事情之一,时间往往在摩擦中白白消耗,分到与自身能力不相称的任务,或是由于某种差异而冲突不断,长达数小时但结果欠奉的会议可以说是司空见惯。有时我们磨合团队所花的时间甚至远远超出完成实质性工…

java加载dll UnsatisfiedLinkError: no mydll in java.library.path

System.loadLibrary("mydll"); 运行异常:java.lang.UnsatisfiedLinkError: no mydll in java.library.path 解决方式:把dll放到path中 java.library.path可以打印看相关路径System.out.println(System.getProperty("java.library.path&qu…

matlab菲涅尔衍射_有问必答——SYNOPSYS安装体验课堂——可以设计菲涅尔透镜吗?...

问:SYNOPSYS可以设计菲涅尔透镜吗?答:在USS中有多种菲涅尔面型,用户输入参数即可。问:SYNOPSYS中具有的输入方式?答:大家总是有个误区,以为SYNOPSYS需要输入命令运行,其实…

介绍一下Objective-c常用的函数,常数变量

算术函数 函数名说明int rand()随机数生成。(例)srand(time(nil)); //随机数初期化int val rand()%50; //0~49之间的随机数int abs(int a)整数的绝对值(例)int val abs(-8); →8※浮点数的时候用fabs。double fab…

WeakReference reference quene GC

在了解WeakReference之前,先给出一段简单的代码: public class WeakReferenceTest {public static void main(String[] args) throws Exception {Object o new Object();// 默认的构造函数&#xff0c;会使用ReferenceQueue.NULL 作为queueWeakReference<Object> wr ne…

北大4位数学天才,如今齐聚美国搞科研,令人叹息

全世界只有3.14 % 的人关注了爆炸吧知识最近这些年&#xff0c;计算机、电子产业异军突起&#xff0c;人工智能越来越受到追捧和重视&#xff0c;电子产品智能化已经成为发展的一种潮流和趋势。与此同时&#xff0c;国际竞争也日益激烈&#xff0c;这种竞争归根结底还是人才的竞…

为什么 Dapr 如此令人兴奋

如今你构建软件&#xff0c;您可以从数量众多的云服务中进行选择。仅 AWS 就每个月都在不断为其200多项服务添加新服务&#xff0c;而其他云提供商也都在跟上。如果您的公司想与您的竞争对手竞争&#xff0c;您就需要充分利用这些服务&#xff0c;这些服务在不同的云提供商都有…

java对象头_我的并发编程(二):java对象头以及synchronized升级过程

一、概述研究java对象头的目的是详细分析Java的synchronized锁的升级过程&#xff0c;因为synchronized在锁升级的时候&#xff0c;就是依赖对象头的信息来决定的。本博文针对64位的操作系统来对Java对象头进行详解。二、详细分析1. 用户态与内核态内核态与用户态是操作系统的两…

【转】Beagleboard:BeagleBoneBlack

原文网址&#xff1a;http://elinux.org/Beagleboard:BeagleBoneBlack Did you know that elinux.org has Mailing Lists? Please feel free to register today to discuss the wiki in general, request features, etc. etc.. Thanks!--Wmat (talk) Beagleboard:BeagleBoneBl…

剖析IE浏览器子系统的性能权重

来源于InfoQ&#xff1a; 微软IE开发团队性能主管Jason Weber在一篇博 文中介绍了IE浏览器的各个子系统&#xff0c;并通过实验数据展示了不同网站对浏览器子系统的性能影响和权重&#xff0c;InfoQ中文站对相关内容做了整理&#xff0c;希望对 浏览器开发人员和Web应用开发人员…

每年通过率仅1%的“天才考试”,中国到底应不应该学?

▲ 点击查看说起世界上最顶尖的基础教育&#xff0c;新加坡绝对能占一席之地。香港首富李嘉诚是这么评价新加坡教育的&#xff1a;“新加坡采用的教育体系源于英国传统的教育制度&#xff0c;它的私立、私立教育院校及一流大学和国际教育机构全球卓越。”李嘉诚甚至在长孙还没多…