一样的SQL,在java中和access查询管理器中为什么结果不同?

scholarone 2009-12-19 10:43:31
例如下表
表名:t1
字段名:aaa ,类型 int


aaa
1
1
1
2
2
55
55
3
3


SQL语句:
select aaa from t1 group by aaa



其正确的结果应为:
aaa
1
2
3
55
记录数4条。

在ACCESS查询管理器中运行此SQL结果正确,但在Jbuilder2006中用JDBC连接Microsoft Access Driver数据源执行此SQL,
会得到一个记录数为9的ResultSet。代码如下:


Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn = DriverManager.getConnection("jdbc:odbc:test1");
Statement state=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE ,ResultSet.CONCUR_UPDATABLE);
ResultSet result=state.executeQuery("select aaa from t1 group by aaa ");
result.last();
System.out.println("记录数:"+result.getRow());//打印结果集记录数
result.beforeFirst();
while (result.next()) {
System.out.println(result.getInt("aaa"));//打印数据
}

state.close();
conn.close();


输出结果:

记录数:9
1
2
3
55


然后就报错:
java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 无效的游标状态

...全文
147 12 打赏 收藏 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
scholarone 2010-01-09
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 crazylaa 的回复:]
引用 10 楼 thinking_chou 的回复:
加一句fetch(0/-1);除了asp其他连接access都这样


具体代码呢?咋加?
[/Quote]

是啊,讲解讲解吧
crazylaa 2009-12-23
  • 打赏
  • 举报
回复
试了半天,果然如此。啥方法都弄过了,都不行。
oracle没有这个问题。估计是microsoft的bug。
crazylaa 2009-12-23
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 thinking_chou 的回复:]
加一句fetch(0/-1);除了asp其他连接access都这样
[/Quote]

具体代码呢?咋加?
AI人H哥会Java 2009-12-23
  • 打赏
  • 举报
回复
加一句fetch(0/-1);除了asp其他连接access都这样
scholarone 2009-12-22
  • 打赏
  • 举报
回复
sean1203 2009-12-20
  • 打赏
  • 举报
回复
gesanri 2009-12-20
  • 打赏
  • 举报
回复
那么你看直接select aaa from t1报错么
scholarone 2009-12-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zhuyouyong 的回复:]
换个sql语句,你看下驱动有没有问题!
[/Quote]
[Quote=引用 5 楼 zl3450341 的回复:]
楼主换个sql语句试试看
[/Quote]
[Quote=引用 3 楼 gesanri 的回复:]
那么你看直接select aaa from t1报错么
[/Quote]

select * from t1这种基本的没错。
但select top 1 * from t1
select aaa from t1 group by aaa
这种就有错。

不但JDBC连接ACCESS会出现这种问题,连接dBase等别的数据库也会有这种问题
zhuyouyong 2009-12-20
  • 打赏
  • 举报
回复
换个sql语句,你看下驱动有没有问题!
老张-AI 2009-12-20
  • 打赏
  • 举报
回复
楼主换个sql语句试试看
scholarone 2009-12-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 acmain_chm 的回复:]
应该是你的驱动的问题。

换成 select distinct aaa  from t1  试试
[/Quote]

还是不可以
ACMAIN_CHM 2009-12-19
  • 打赏
  • 举报
回复
应该是你的驱动的问题。

换成 select distinct aaa from t1 试试

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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