tnnd,有人竟然用jdbcType来决定mysql查询返回的对象类型。。。但是mysql驱动也在3.x -> 5.x 这个升级过程中改变了一点,造成jdbcType来判断就有问题了。。。
ResultSet rs = stmt.executeQuery(“select substring(now(),12,2) as gtime;”);
ResultSetMetaData rsmd = rs.getMetaData();
for(int i=1; i<=rsmd.getColumnCount(); i++) {
System.out.print(rsmd.getColumnName(i));
System.out.print("::");
System.out.print(rsmd.getColumnType(i));
System.out.print("::");
System.out.print(rsmd.getColumnTypeName(i));
System.out.print("::");
System.out.println();
}
这样子,在3.x的驱动里面,会认为:
gtime::12::VARCHAR
但是在 5.x的驱动里面,就会认为这个是:
gtime::-3::VARBINARY
jdbcType判断有有问题了,很无奈啊。。。虽然有办法,但是要改代码,
select cast(substring(now(),12,2) as CHAR(2)) as gtime
这样子就可以了,但是效率肯定有点影响,懒得改了,只有升级到mysql 3.1的最新版算了,不用5.x了
Leave a Reply