使用JDBC实现QQ登录

在实际开发中,用户信息是存放在数据库中的,登录时的账号和密码信息也需要去数据库中查询,本节将使用JDBC技术来完善QQ登录案例。

1.创建数据表,并添加用户数据

在jdbc数据库中创建数据表tb_qquser,并在表中插入3条数据,其执行的SQL语句如下:

CREATETABLE tb_qquser (
        id INTPRIMARYKEYAUTO_INCREMENT,
        qqnumber VARCHAR(50),
        password VARCHAR(50));INSERTINTO tb_qquser (qqnumber, password)VALUES('123456789','123');INSERTINTO tb_qquser (qqnumber,password)VALUES('987654321','456');INSERTINTO tb_qquser (qqnumber,password)VALUES('1314520888','123abe');

在实际开发中,用户信息是存放在数据库中的,登录时的账号和密码信息也需要去数据库中查询,本节将使用JDBC技术来完善QQ登录案例。

2.编写查询用户方法

创建一个用于实现用户登录相关操作的类LoginDao,并在类中编写查询用户的方法findUser(),如例9-2所示。

例9-2 LoginDao.java

import java.sql.*;public class LoginDao {
    PreparedStatement prestnt =null;
    Connection conn =null;
    ResultSet rs =null,//查询用户publicBoolean findUser (String qqnumber, String pwd)
                          throws SQLException {
        try {
          //1.加载数据库驱动
          Class.forName("com.mysq1.jdbc.Driver");
          String url ="jdbc:mysql://localhost:3306/jdbc":
          String username ="root";
          String password ="root";//2.获取数据库连接
          conn =DriverManager .getConnection (url, username, password);//3.定义需要执行的SQL
          String sql="select * from tb_qquser "+"where qqnumber =? "+"and password =?";//4.创建PreparedStatement对象
          prestmt =conn.prepareStatement(sql);
          prestmt.setString(1, qqnumber);
          prestmt.setString (2, pwd);//5.执行SQL并将获取的数据信息存放在ResultSet中
          rs =prestmt.executeQuery();//如果查询的结果集中有超过一条的记录,则登录成功if(rs.next()) { returntrue; }
        } catch (Exception e) {
          e.printStackTrace();
        } finally {
           //6.释放资源if(rs !=null) {rs.close(); }
           if(prestnt !=null){prestmt.close();}
           if(conn !=null) {conn.close();}
        }
        returnfalse;
    }
}

在上述的查询用户方法中,加粗部分的代码就是查询操作的主要代码。在定义的SQL中,使用占位符“?”来表示查询条件,并通过PreparedStatement对象的setString()方法设置参数值。执行SQL后,如果结果集中有超过一条以上的数据,那么就表示数据表中有此用户,会返回true;否则表示没有此用户,将返回false。

3.修改监听方法

将登录监听器类LoginListener中 actionPerformed()方法内的模拟查询用户名和密码的代码修改为查询数据库的方法,修改后的方法代码如下:

public void actionPerformed (ActionEvent e) {
    //1.获取登录的账号和密码
    String name =(String) jco.getSelectedItem();
    String pwd =new String (jpa.getPassword ());//创建LoginDao对象
    LoginDao loginDao =new LoginDao ();//查询登录用户,如果有此用户并且密码正确则返回trueBoolean bl =false;
    try {
    bl =loginDao.findUser (name, pwd);
    } catch (SQLException el) 
        el.printStackTrace();
        {
    //2判断输入的账号和密码是否正确If(bl)  {
       //账号正确,先关闭当的JErame登录窗口
       jf.diapose ():
       //模监显示登录成功后的QQ窗口
       JFrane jfn =new JErame();
       Jfn.setSize(289,687);
       jfn.setLocation(800,100);
       jfn.setUndecorated(true);
       jfn.setResizable (true);
       jfn.setVisible (true);//为QQ显示窗口添加背景图片和退出按钮组件
       JPanel panel =new JPanel ();
       panel.setLayout (null);
       panel.setPreferredSize(new Dimension (0,140));
       ImageIcon image =new ImageIcon("images/qqSuccess.jpg");
       JLabel background =new JLabel (image);
       background.setBounds (0,0,289,687);
       panel.add(background);//添加退出按纽
       JButton out=
       new JButton (new ImageIcon("images/close2 normal.jpg"));out.setBounds(265,0,26,26);out.setRolloverIcon(new ImageIcon("images/close2 hover.jpg"));out.setBorderPainted(false);
       panel.add(out);
       jfn.add(panel);//为退出按钮注册监听器,关闭当前窗口out.addActionListener (event ->jfn.dispose ());)else(//QQ账号或密码输入错误,弹出提示信息
        J0ptionPane.showMessageDialog (null,
                “你输入的账户名或密码不正确,请重新输入!”);
     }
}

从上述代码可以看出,所修改的部分其实非常简单。首先创建了LoginDao对象,然后使用该对象的findUser()方法来查询是否存在所输入的用户,如果返回结果为true,则表示存在该用户,可以成功登录;如果为false,则提示账户名或密码错误。

4.启动程序,查看效果

修改完成后,即可启动程序,此时的登录窗口如图9-5所示。

在QQ登录窗口分别输入正确的账号和密码并单击登录按钮后,将显示登录后的窗口信息,如图9-6所示。

从图9-6可以看出,用户已登录成功,这说明使用JDBC已正确查询出了数据表中的数据。如果通过其他两个账号,在输入正确的密码后,将同样可以登录成功。这里就不再演示了,读者可自行测试。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值