问题描述:
MySQL中有两张表,a2b和a_b,通过以下方式获取表中字段的信息
ConnectionImpl mysql = (ConnectionImpl)conn.unwrap(ConnectionImpl.class);
rs = mysql.getMetaData().getColumns(schemaName, null, tableName, null);
while(rs.next) {
...
}
在获取表a_b字段信息的时候发现查询出来了表a2b的字段信息。
问题原因:
通过mysql.getMetaData().getColumns方法获取字段信息的时候,底层用的是like方法,而符号“_”在里面是占位符,所以在查询的时候会带出来a2b的表字段信息。
解决方法:
将符号“_”转义成普通字符,用如下方法:
tableName = tableName.replaceAll("_", "\\_");
这样就能解决查询出别的表的字段信息。