求助??为什么会出现[Microsoft]{ODBC驱动程序管理器]无效的游标状态??

hooligan31000 2004-04-16 04:15:56
有两个窗口,“持卡人表”,“明细表”
“持”主要是输入记录,“明”主要是查找用的
在“明”中有JComboBox控件,显示出“持”中的输入的ID号,在“明”中有两个TextField控件,显示出选择JComboBox相应的姓名,年龄
下面是部分代码,不知道哪里错了,请高手看看,谢谢!


//连接数据库
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn=DriverManager.getConnection(url);
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String query;
query="select * from card";
rs=stmt.executeQuery(query);
rs.beforeFirst();
while(rs.next()) //显示JComboBox的内容(卡号)
{
String CardId=rs.getString(1);
c1.addItem(CardId);
}
rs.close(); //关闭
stmt.close();
}catch(Exception ex)
{
System.out.println(ex.getMessage());
}

try
{ //初始化的JComboBox内容
String queryInit,strstr;
strstr=(String)(c1.getSelectedItem());
queryInit="select * from card where 卡号='"+strstr+"'";
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);


rs=stmt.executeQuery(queryInit);
t3.setText(rs.getString(2));//姓名
t5.setText(rs.getString(8));//年龄
System.out.println("OK!!!!!");

}
catch (Exception e)
{
System.out.println(e.getMessage());
}
...全文
179 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
hooligan31000 2004-04-19
  • 打赏
  • 举报
回复
青青,我看不懂private String url="jdbc:odbc:star";还没该过来呀,什么意思?
davidkahn 2004-04-19
  • 打赏
  • 举报
回复
默认的就指向第一行的前一行,所以不用beforefirst();
lqjd 2004-04-19
  • 打赏
  • 举报
回复
你的Mixibiao.java中对URL的定义private String url="jdbc:odbc:star";还没该过来呀,再看看我上面的代码啰*_*
hooligan31000 2004-04-19
  • 打赏
  • 举报
回复
up
denisu 2004-04-18
  • 打赏
  • 举报
回复
养成习惯,
rs=stmt.execute.....
while(rs.next())
//这里才能使用rs。


而且,尽量少用rs.beforefirst。用了以后还得继续while(rs.next())。

denisu 2004-04-18
  • 打赏
  • 举报
回复
rs=stmt.executeQuery(queryInit);
t3.setText(rs.getString(2));//姓名
t5.setText(rs.getString(8));//年龄
System.out.println("OK!!!!!");

同志,上面你晓得用rs.beforeFirst,为什么这里不用呢?
刚刚execute,rs的游标是指在空位置,得先挪到第一条记录,才能getString的
hooligan31000 2004-04-18
  • 打赏
  • 举报
回复
不行,[Microsoft]{ODBC驱动程序管理器]无效的游标状态,谁能告诉我:一般错误的情况是什么?谢谢
hui3zhihui 2004-04-18
  • 打赏
  • 举报
回复
把rs.beforeFirst();注释掉试一下
hooligan31000 2004-04-18
  • 打赏
  • 举报
回复
我有急用,请高手帮我看看
http://www.chinajavaworld.net/non-cgi/usr/23/23_4015.rar
hooligan31000 2004-04-18
  • 打赏
  • 举报
回复
我改过了好了,但是又出现问题:ResultSet is closed!
这是怎么回事,怎么rs已经关闭了?
lqjd 2004-04-18
  • 打赏
  • 举报
回复
我也遇到你的情况,不妨把JDBC-ODBC桥该为直连的方式,就可以了。
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn=DriverManager.getConnection(url);
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
改为:
try{Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
}
catch(ClassNotFoundException e){}
try{ con=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=数据库","用户名","密码");
sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
treeroot 2004-04-18
  • 打赏
  • 举报
回复
rs默认指向第一个记录前面,没有调用next()方法就出现这样的错误
几乎都是这样造成的
hooligan31000 2004-04-17
  • 打赏
  • 举报
回复
谁能帮我看看
hooligan31000 2004-04-16
  • 打赏
  • 举报
回复
up

62,614

社区成员

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

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