首先我们得准备工具,在这里就不多说了可以看上一章的注意事项。
同样的,我们要新建四个项目testuserdao、userdao、loginframe、connectionmanager。
首先我们可以看一下我们t_use表里面的用户信息。在本章我们以“小石,密码:456,电话号码”为例。
userdao代码:
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class UserDao {
public boolean login(String username,String password,String telephone){
//1获得数据库的连接(加载数据库驱动,通过drivermanager获取数据库连接)
Connection conn= ConnectionManager.getConnection();
try {
//2通过connection对象获取statement对象
String strSQL="select * from t_user where username=? and password=? and telephone=?";
PreparedStatement pstmt =conn.prepareStatement(strSQL);
pstmt.setString(1,username);
pstmt.setString(2,password);
pstmt.setString(3,telephone);
//3使用statement执行SQL语句
ResultSet rs=pstmt.executeQuery();
//4对增删改查结果的处理
if(rs.next()){
return true;
}else{
return false;
}
}catch (SQLException e){
System.out.println("数据库的234步产生的异常");
e.printStackTrace();
}finally {
//5关闭数据库
ConnectionManager.closeConnection(conn);
}
return false;
}
}
testuserdao代码:
public class TestUserDao {
public static void main(String[] args) {
String username="芝兰";
String password="123";
String telephone="16556546545";
UserDao userDao=new UserDao();
boolean a=userDao.login(username,password,telephone);
if(a){
System.out.println("用户名和密码正确,登陆成功");
}else{
System.out.println("用户名和密码不正确,登陆失败");
}
}
}
loginframe代码:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class LoginFrame extends JFrame {
public LoginFrame(String title) throws HeadlessException {
super(title); // 调用父类构造方法传入标题参数
initGUI(); // 调用初始化图形用户界面方法
}
private void initGUI() {
// 创建三个面板
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
JPanel panel3 = new JPanel();
JPanel panel4 = new JPanel();
// 获取内容面板
JPanel panel = (JPanel) getContentPane();
// 设置面板panel的布局为表格布局
panel.setLayout(new GridLayout(4, 1));
// 将三个小面板添加到面板panel里
panel.add(panel1);
panel.add(panel2);
panel.add(panel3);
panel.add(panel4);
// 创建用户名标签
JLabel lblUsername = new JLabel("用 户 名:");
// 创建用户名文本框
JTextField txtUsername = new JTextField(15);
// 将标签与文本框添加到第一个面板
panel1.add(lblUsername);
panel1.add(txtUsername);
// 创建密码标签
JLabel lblPassword = new JLabel("密 码:");
// 创建密码文本框
JPasswordField txtPassword = new JPasswordField(15);
// 将标签与文本框添加到第二个面板
panel2.add(lblPassword);
panel2.add(txtPassword);
// 创建密码标签
JLabel lblTelephone = new JLabel("电话号码");
// 创建密码文本框
JTextField txtTelephone = new JTextField(15);
// 将标签与文本框添加到第二个面板
panel3.add(lblTelephone);
panel3.add(txtTelephone);
// 创建登录按钮
JButton btnLogin = new JButton("登陆");
// 创建取消按钮
JButton btnCancel = new JButton("确定");
// 将两个按钮添加到第三个面板
panel4.add(btnLogin);
panel4.add(btnCancel);
// 设置窗口边界
setBounds(300, 300, 400, 300);
// 设置屏幕居中
setLocationRelativeTo(null);
// 设置窗口紧凑
pack();
// 设置窗口可见
setVisible(true);
// 设置默认关闭方式
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 给【取消】按钮注册动作监听器
btnCancel.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 退出应用程序
System.exit(0);
}
});
// 给【登录】按钮注册动作监听器
btnLogin.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 获取用户输入的用户名与密码
String username = txtUsername.getText().toString();
String password = new String(txtPassword.getPassword());
String telephone = txtTelephone.getText().toString();
// 创建用户数据访问对象
UserDao userDao=new UserDao();
boolean a=userDao.login(username,password,telephone);
if(a){
System.out.println("用户名或密码正确");
JOptionPane.showMessageDialog(LoginFrame.this,
"登陆成功!", "提示信息", JOptionPane.INFORMATION_MESSAGE);
LoginFrame.this.dispose(); // 关闭登录窗口
}else{
System.out.println("用户名或密码不正确");
JOptionPane.showMessageDialog(LoginFrame.this,
"登陆失败", "提示信息", JOptionPane.ERROR_MESSAGE);
LoginFrame.this.dispose(); // 关闭登录窗口
}
}
});
}
public static void main(String[] args) {
// 实例化登录窗口对象
LoginFrame loginFrame = new LoginFrame("登陆窗口");
}
}
最后是connectionmanager代码,可以看上一章修改密码或者用户注册里面的代码。在这里我就不放代码了哦~
注意:我们要实现运行结果是在loginframe里面的哦。



