读书人

怎么获得预编译sql中问号的数据类型

发布时间: 2012-02-08 19:52:21 作者: rapoo

如何获得预编译sql中问号的数据类型?
比如,我有一条预编译sql语句 select * from user u where u.id<? and u.name=?
怎么才能获得这两个问号的数据类型呢?
按照文档上的说法,我写了如下代码:
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?generateSimpleParameterMetadata=true", "root", "root");
String sql = "select * from user u where u.user_berthday<? and u.user_id<?";
PreparedStatement ps = conn.prepareStatement(sql);
ParameterMetaData pmd = ps.getParameterMetaData();
int count = pmd.getParameterCount();
for (int i = 0; i < count; i++) {
System.out.println(pmd.getParameterTypeName(1));
}
按照文档上的说法,那应该答应date和int类型,但事实上,打印的结果全是varchar,换了好多驱动都一样,
oracle的驱动甚至连getParameterTypeName()这个方法都不支持!
求解决啊!!!!!

[解决办法]
这还真是个事,路过!
[解决办法]
com.mysql.jdbc.MysqlParameterMetadata,as of version 5.1.18

Java code
    public String getParameterTypeName(int arg0) throws SQLException {        if (this.returnSimpleMetadata) {            checkBounds(arg0);            return "VARCHAR";        }        checkAvailable();        return (this.metadata.getColumnTypeName(arg0));    }
[解决办法]
你都还没往里面传参数
怎么去获得参数类型...

读书人网 >J2EE开发

热点推荐