java开发登陆界面时比较数据库字符窜的问题

来源:互联网 发布:复杂网络的统计特征 编辑:程序博客网 时间:2024/05/13 20:41

前几天我在做课程设计时遇到这样的一个问题:

首先sql2000建 的一个表如下:

 

大家留意 : 我的数据类型是char(这个是问题的关键)

如果大家有耐心的就看下代码拉不过我讲思路也行的(代码只是我事件的代码放最后了,现在我们说思路)

if(用户ID和用户秘密都不是空){

        进行数据库的连接并读出用户ID和秘密;

       用户输入的用户ID和秘密与数据库的比较;————问题是我怎么都比较不了

      。。。。。。。。.(其他的我就不说了)。。。。。。。。。。

}

else则输出错误信息并再次输入;

。。。。。。。。。。。。

问题分析 :

if(managername.equals(name)&&managerpassword.equals(password))

我是用这个比较的,可是就是就是现实不相等啊;我想会不会长度有问题

于是我用managername。length 和 name。length 查看了 长度, 果然真的是长度不相等哦

数据库读出的长度都为8而用户输入的就是字符窜本身长度。equals只能比较等长的;

于是我就吧数据库的数据类型改成varchar

这样问题就解决了;问题在于varchar是可变长度 数据库的字符窜多长读出来的 就多长

ohoh!!!今天到此为止!!

 

 

public void jButton1_actionPerformed(ActionEvent e) throws Exception{

    String name = jTextField1.getText().toString();
    String password =new String(jPasswordField1.getPassword());

    if(!name.equals("")&&!password.equals("")){

      try {
        String url = "jdbc:odbc:student";
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        Connection con = DriverManager.getConnection(url);
        Statement stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT * from stu");

        while (rs.next()) {
          managername = rs.getString("ad_id");
          managerpassword = rs.getString("ad_pass");


        }
         if(managername.equals(name)&&managerpassword.equals(password)){
           this.flag=true;
           this.setVisible(false);
           mainframe mframe = new mainframe();
           mframe.setSize(750,560);
           mframe.setVisible(true);
         }
         else{
           jTextField1.setText("");
           jPasswordField1.setText("");
         }
      }
      catch (Exception ee) {
        System.out.println(ee);
      }
    }
    else{
      JOptionPane.showMessageDialog(null, "请输入完整的信息","管理员登陆",JOptionPane.PLAIN_MESSAGE);
    }
  }

原创粉丝点击