关于ResultSet 和statementde 问题 高手帮下忙~!~!~!!

liangxiongqian 2009-11-02 11:51:07
代码如下:
public void actionPerformed(ActionEvent a) {
String cmd = a.getActionCommand();
JDialog d = new JDialog();
zh = textField.getText();
mima = textField_1.getText();
Connection conn;
Connection con;
Statement sq,qq;
ResultSet rs,tt=null ;

try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (Exception t) {
}
try {

con = DriverManager.getConnection("jdbc:odbc:学生管理", "lxq", "123456");
sq = con.createStatement();
qq=con.createStatement();
rs = sq.executeQuery("select 账号,密码 ,学号 from 账号表 ");

if (cmd.equals("确定")) {
while (rs.next()) {
if (rs.getString(1).equals(zh)&& (rs.getString(2).equals(mima))) {

String xh=rs.getString(3); rs.close();
sq.close();

tt = qq.executeQuery("select 学生表.学号, 姓名,性别,班级,学院"
+ " from 学生表,账号表 where 学生表.学号=账号表.学号 ");

while (tt.next()) {
if (tt.getString(1).equals(xh)) {
name = tt.getString("姓名");
sex = tt.getString("性别");
bj = tt.getString("班级");
xy = tt.getString("学院");
System.out.print(name);
System.out.print(sex);
System.out.print(bj);
System.out.print(xy);
break;
}
}
JOptionPane.showMessageDialog(d, "登录成功,5秒后转到系统界面","" + "", JOptionPane.WARNING_MESSAGE);

break;
}
else continue;

}


}

if (rs.next() == false) {
JOptionPane.showMessageDialog(d, "用户名或密码错误!", "请重新输入",
JOptionPane.WARNING_MESSAGE);
}
if (cmd.equals("取消")) {
textField.setText(null);
textField_1.setText(null);

}
} catch (Exception es) {
}

if (cmd.equals("选项")) {
if (cmd.equals("退出"))
System.exit(0);
}

}

我的想法是 如果账号和密码都匹配了 就得到一个新的resultset tt
然后再给 name sex bj xy赋值 付完值之后就 执行JOptionPane.showMessageDialog(d, "登录成功,5秒后转到系统界面","" + "",JOptionPane.WARNING_MESSAGE); 可是 就是无法执行
要是去掉下面的代码 就能响应 JOptionPane.showMessageDialog(d, "登录成功,5秒后转到系统界面","" + "",JOptionPane.WARNING_MESSAGE);

去掉代码如下:
tt = qq.executeQuery("select 学生表.学号, 姓名,性别,班级,学院"
+ " from 学生表,账号表 where 学生表.学号=账号表.学号 ");

while (tt.next()) {
if (tt.getString(1).equals(xh)) {
name = tt.getString("姓名");
sex = tt.getString("性别");
bj = tt.getString("班级");
xy = tt.getString("学院");
System.out.print(name);
System.out.print(sex);
System.out.print(bj);
System.out.print(xy);
break;
}
}

帮帮忙咯 我弄好就了
我一个statement 对应一个resultset
...全文
45 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
liangxiongqian 2009-11-02
  • 打赏
  • 举报
回复
已经解决了 其实是SQL语句的问题 不能有WHERE子句 去掉了就可以 郁闷
youjianbo_han_87 2009-11-02
  • 打赏
  • 举报
回复
rs.close();
sq.close();


这段关闭拿到整个大 while外面去关闭试试。
fruitsboy 2009-11-02
  • 打赏
  • 举报
回复
while (tt.next()) {
if (tt.getString(1).equals(xh)) {
我估計是你這裏的條件出錯了!
liangxiongqian 2009-11-02
  • 打赏
  • 举报
回复
to cy-5214
System.out.print(name);
System.out.print(sex);
System.out.print(bj);
System.out.print(xy); 我只是为了测试而已 就算是去掉了 break 也不能输出 也就是说 这些变量根本没有被赋值
fruitsboy 2009-11-02
  • 打赏
  • 举报
回复
while (tt.next()) {
if (tt.getString(1).equals(xh)) {
name = tt.getString("姓名");
sex = tt.getString("性别");
bj = tt.getString("班级");
xy = tt.getString("学院");
System.out.print(name);
System.out.print(sex);
System.out.print(bj);
System.out.print(xy);
break;
}

你把這裏的break 去掉,條件查詢嚴謹也只會返回一條數據,可以不用break。

51,410

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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