首先我没有藐视低手的意思,因为本人也是个低手,只希望此标题能引起更多人的人来帮我,谢谢大家了!
一个简单的学生信息管理系统,纯JDK编辑的,(数据库连接SQL2000)为什么删除和添加功能可以用,查询和修改功能用不了,总是异常的信息?大家帮我改改啊
 //查找功能的实现(表是Coolboy)
         if(e.getSource()==subMenu2[0]||e.getSource()==toolBarButton[0])
           {
              String idid = JOptionPane.showInputDialog("请输入要查找的学生学号");
              if(idid.trim()!="")
              {
                  String strSQL = "select * from Coolboy where id ='" + idid + "'";
                  try
                  {
                  // rs = st.executeQuery("select * from Coolboy where id ='2006010123'");
                      rs = st.executeQuery(strSQL);
                      int count = 0;
                      while(rs.next())
                       {
                             id = rs.getString("id");
                             name = rs.getString("name");
                             department = rs.getString("department");
                             sex = rs.getString("sex");
                             birthday = rs.getString("birthday");
                             nation = rs.getString("nation");
                             ++count;
                        }
                       if(count==0)
                             JOptionPane.showMessageDialog(null,"对不起,没有您要查找的学生!");
                       else
                       {
                             idT.setText(id);
                             nameT.setText(name);
                             sexT.setText(sex);
                             nationT.setText(nation);
                             departmentT.setText(department);
                             birthdayT.setText(birthday);
                            
                            
                        }
                    }
                    catch(Exception ex)
                    {
                         JOptionPane.showMessageDialog(null,"抱歉,程序出现异常!");
                    }             }
        }
////////////////////////////////////////////////////////////////////////////////////
        if(e.getSource()==subMenu1[4])
        {
           closeDB();
           System.exit(0);
        }
/////////////////////////////////////////////////////////////////////////////////////
        if(e.getSource()==subMenu2[1] || e.getSource()==toolBarButton[1])
        {
             JOptionPane.showMessageDialog(null,"请输入要添加的学生信息");
             idT.setEnabled(true);
             idT.setText("");
             nameT.setText("");
             sexT.setText("");
             birthdayT.setText("");
             nationT.setText("");
             departmentT.setText("");         }
//////////////////////////////////////////////////////////////////////////////////////
         if(e.getSource()==toolBarButton[5] || e.getSource()==subMenu2[5])
         {
            if((idT.getText().trim()).equals("") || (nameT.getText().trim()).equals("") || (sexT.getText().trim()).equals("") || (birthdayT.getText().trim()).equals("") ||(nationT.getText().trim()).equals("") || (departmentT.getText().trim()).equals(""))
            JOptionPane.showMessageDialog(null,"请输入信息再点击提交添加!");
            else
           {
                id = idT.getText();
                name = nameT.getText();
                sex = sexT.getText();
                birthday = birthdayT.getText();
                nation = nationT.getText();
                department = departmentT.getText();
                String strSQL ="insert into Coolboy(id,name,sex,birthday,nation,department) values('" + id + "','" + name + "','" + sex + "','" + birthday + "','" + nation + "','" + department + "')";
           try
           {
                st.executeUpdate(strSQL);
            }
           catch(Exception exx)
           {
                JOptionPane.showMessageDialog(null,"数据库中已经存在您要添加的学生的学号!");
                /*idT.setText("");
                  nameT.setText("");
                  sexT.setText("");
                  birthdayT.setText("");
                  nationT.setText("");
                  departmentT.setText("");*/
                  return;
           }
           JOptionPane.showMessageDialog(null,"恭喜您,添加成功了!");
       }
    }
////////////////////////////////////////////////////////////////////////////////////////////
    if(e.getSource()==subMenu2[4] || e.getSource()==toolBarButton[4])
    {
        if((idT.getText().trim()).equals("") || (nameT.getText().trim()).equals("") || (sexT.getText().trim()).equals("") || (birthdayT.getText().trim()).equals("") ||(nationT.getText().trim()).equals("") || (departmentT.getText().trim()).equals(""))
        {
             JOptionPane.showMessageDialog(null,"请输入信息再点击修改!");
             return;
        }
        else
        {
        id = idT.getText();
        name = nameT.getText();
        sex = sexT.getText();
        birthday = birthdayT.getText();
        nation = nationT.getText();
        department = departmentT.getText();
        String strSQL ="update Coolboy set name='"+name+"',sex='"+sex+"',birthday='"+birthday+"',nation='"+nation+"',department='"+department+"'"+"where id='"+id+"'";
        try
        {
           st.executeUpdate(strSQL);
        }
        catch(Exception exx)
        {
             JOptionPane.showMessageDialog(null,"数据库中已经存在您要修改的学生记录!");
             /*idT.setText("");
               nameT.setText("");
               sexT.setText("");
               birthdayT.setText("");
               nationT.setText("");
              departmentT.setText("");*/
              return;
         }
     JOptionPane.showMessageDialog(null,"恭喜您,修改成功了!");
    }  }
//////////////////////////////////////////////////////////////////////////////////////////
   if(e.getSource()==subMenu2[3]||e.getSource()==toolBarButton[3])
   {
       String idid = JOptionPane.showInputDialog("请输入要修改的学生学号");
       if(idid.trim()!="")
       {
          String strSQL = "select * from Coolboy where id ='" + idid + "'";
          try
          {
             //rs = st.executeQuery("select * from Coolboy where id ='2006010123'");
                rs = st.executeQuery(strSQL);
                int count = 0;
                while(rs.next())
                  {
                       id = rs.getString("id");
                       name = rs.getString("name");
                       department = rs.getString("department");
                       sex = rs.getString("sex");
                       birthday = rs.getString("birthday");
                       nation = rs.getString("nation");
                       ++count;
                    }
                 if(count==0)
                    JOptionPane.showMessageDialog(null,"对不起,没有您要修改的学生信息!");
                 else
                 {
                      idT.setText(id);
                      nameT.setText(name);
                      sexT.setText(sex);
                      birthdayT.setText(birthday);
                      nationT.setText(nation);
                      departmentT.setText(department);
                      idT.setEnabled(false);
                  }
              }
              catch(Exception ex)
              {
                   JOptionPane.showMessageDialog(null,"抱歉,程序出现异常!");
              }           }
        }
以上一实现查询和修改功能总是显示-抱歉,程序出现异常!怎么改?

解决方案 »

  1.   

    在执行SQL之前,把它打出来,看看是不是SQL本身有问题.
      

  2.   

    输出来的信息就是catch里面的,(抱歉,程序出现异常),有了异常捕捉功能当然可以编译运行,只是得不到我的结果,我要查询啊和修改啊
      

  3.   

    改成这样
    JOptionPane.showMessageDialog(null,"抱歉,程序出现异常!" + ex.getMessage());
      

  4.   

    我说了,有了  catch(Exception ex)
                        {
                             JOptionPane.showMessageDialog(null,"抱歉,程序出现异常!");
                        }
    就看不到异常信息了,你们都好象搞错意思了,你们帮我改下(查询功能)代码,而不是叫你们帮我弄成不要出现异常,我需要查询啊这个系统,怎么实现查询功能,代码里哪错了?
      

  5.   

    david2083说的对,你把异常信息贴出来,大家才能给你看问题在哪啊
      

  6.   

    在你贴上的代码的第4行:if(idid.trim()!="") 改成 if(!idid.trim().equals(""))至于其他的问题,代码又没有缩进,读起来很累的,你最好把 catch 块中的代码换成 exx.printStackTrace(); 再把控制台上的错误信息贴上来,否则根本没办法看。
      

  7.   

    确实不是我写的,我初学吗,异常提示:[Microsoft][ODBC SQL Server Driver]无效的描述符索引
    怎么办啊?
      

  8.   

    你会DEBUG吗  自己设个断点跟一下 看看错误处在什么地方,
      

  9.   

    [Microsoft][ODBC SQL Server Driver]无效的描述符索引 问题的解决
    在jsp对sqlserver数据库进行数据读取的时候,
    必须按照表中列名的顺序读取,否则会出现错误取数据的时候要按照数据库字段的顺序来取
    比如数据库 varchar id
              varchar name
              varchar address取的时候一定要按下面顺序来取:
            rs.getString("id")
            rs.getString("name")
            rs.getString("address")
    再赋值
     String s1=rs.getString("id");
     String s2=rs.getString("name");
     String s3=rs.getString("address");
    之后可以随意顺序使用s1,s2,s3了!
      

  10.   

    程序编译的过么? 如果过了 估计是SQL语句的问题
      

  11.   

    把else
                           {
                                 idT.setText(id);
                                 nameT.setText(name);
                                 sexT.setText(sex);
                                 nationT.setText(nation);
                                 departmentT.setText(department);
                                 birthdayT.setText(birthday);
                                
                                
                            }  
                    改成 else
                     {
                          idT.setText(id);
                          nameT.setText(name);
                          departmentT.setText(department);
                          sexT.setText(sex);
                          birthdayT.setText(birthday);
                          nationT.setText(nation);
                          idT.setEnabled(false);
                      }看看
      

  12.   

    谢谢大家了,更要感谢david2083 ,真的很感谢你耐心的教导!初步告捷,才知道数据库里的字段要跟程序里的字段一致.
    再就是问下,以前JDBC采用直连的,代码为(Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");con = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Coolboy","sa",""))怎么连都连不上,现在用ODBC桥连才行,请问怎样直连啊?
      

  13.   

    是不是那三个jar包没加到classpath里面
    forName有没有异常
      

  14.   

    DatabaseName=Coolboy
    你的数据库名也叫Coolboy 吗???
    还有,你的sp3或者sp4服务安了吗???????
      

  15.   

    要把SqlServer的sp4服务安装,再把JDBC的3个包加进去就可以了.
      

  16.   

    我的数据库名是Coolboy,而且Classpath应该也没错,三个Jar包也复制过来了,可能是SQL的sp4服务没安装吧?去哪下载啊,以前是听过要装这个补丁