如何获得预编译sql中问号的数据类型?

fytq813 2011-10-31 10:53:15
比如,我有一条预编译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()这个方法都不支持!
求解决啊!!!!!
...全文
263 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
fytq813 2011-11-01
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 beiouwolf 的回复:]
你都还没往里面传参数
怎么去获得参数类型...
[/Quote]
感谢你的回答,但是,这本来就是在set值之前可以做的,你去看看文档吧
beiouwolf 2011-11-01
  • 打赏
  • 举报
回复
你都还没往里面传参数
怎么去获得参数类型...
fytq813 2011-11-01
  • 打赏
  • 举报
回复
去掉simple当然会报错,因为根本就没有generateParameterMetadata这个参数,不过既然SUN的文档上写清楚了,接口也定好了,而且mysql的驱动也那样实现了,肯定是能返回的吧,只是我太菜了,不会用罢了。
fytq813 2011-11-01
  • 打赏
  • 举报
回复
哎,都发了两天了,路过的人多,回答的人少,虽然没得到正确的答案,但还是非常感谢各位的回答,都有分。
阳光的毛毛 2011-10-31
  • 打赏
  • 举报
回复
这还真是个事,路过!
shine333 2011-10-31
  • 打赏
  • 举报
回复
应该是不能返回参数之类型。如果你把jdbc url里面的simple参数去掉,恐怕直接抛异常了。
fytq813 2011-10-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 shine333 的回复:]
com.mysql.jdbc.MysqlParameterMetadata,as of version 5.1.18

Java code

public String getParameterTypeName(int arg0) throws SQLException {
if (this.returnSimpleMetadata) {
……
[/Quote]
我也看了这里的,但是不知道要怎么做才能让this.returnSimpleMetadata == false啊,因为上面url传的参数就是SimpleParameterMetadata的,但是又没看见哪个参数是相同功能,并且不是simpl的啊
shine333 2011-10-31
  • 打赏
  • 举报
回复
com.mysql.jdbc.MysqlParameterMetadata,as of version 5.1.18
	public String getParameterTypeName(int arg0) throws SQLException {
if (this.returnSimpleMetadata) {
checkBounds(arg0);

return "VARCHAR";
}

checkAvailable();

return (this.metadata.getColumnTypeName(arg0));
}

其中this.metadata 是ResultSetMetaData
fytq813 2011-10-31
  • 打赏
  • 举报
回复
怎么没人回答啊?跪求错误原因和解决办法!!!,嫌分低么?解决了加分

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧