java连接 操作 sql server 2012swing 用户登录界面,利用数据库存储的密码验证登录

做成这些需要学:
1.swing
2.sql server驱动加载,服务器ip端口设置
3.创建数据库,查询语句
界面展示
在这里插入图片描述
在这里插入图片描述

test3/login.java

package test3;
import java.awt.Dimension;  //封装了一个构件的高度和宽度
import java.awt.FlowLayout;
import java.awt.Font;
 
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JPasswordField;
import javax.swing.JButton;

public class login {
 
	//在类中定义主函数
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//在主函数中,实例化Login类的对象,调用初始化界面的方法
		login login = new login();
		login.initUI();
		
		
	}
	
	//在类中定义初始化界面的方法
	public void initUI() {
		//在initUI中实例化JFrame类的对象
		JFrame frame = new JFrame();
		//设置窗体对象的属性值
		frame.setTitle("Login");//设置窗体标题
		frame.setSize(400, 250);//设置窗体大小,只对顶层容器生效
		frame.setDefaultCloseOperation(3);//设置窗体关闭操作,3表示关闭窗体退出程序
		frame.setLocationRelativeTo(null);//设置窗体相对于另一组间的居中位置,参数null表示窗体相对于屏幕的中央位置
		frame.setResizable(false);//禁止调整窗体大小
		frame.setFont(new Font("宋体",Font.PLAIN,14));//设置字体,显示格式正常,大小
		
		//实例化FlowLayout流式布局类的对象,指定对齐方式为居中对齐组件之间的间隔为10个像素
		FlowLayout fl = new FlowLayout(FlowLayout.CENTER,10,10);
		//实例化流式布局类的对象
		frame.setLayout(fl);
		
		//实例化JLabel标签对象,该对象显示“账号”
		JLabel labname = new JLabel("账号:");
		labname.setFont(new Font("宋体",Font.PLAIN,14));
		//将labname标签添加到窗体上
		frame.add(labname);
		
		//实例化JTextField标签对象化
		JTextField text_name = new JTextField();
		Dimension dim1 = new Dimension(300,30);
		text_name.setPreferredSize(dim1);//设置除顶级容器组件以外其他组件的大小
		//将textName标签添加到窗体上
		frame.add(text_name);
		
		//实例化JLabel标签对象,该对象显示“密码”
		JLabel labpass = new JLabel("密码:");
		labpass.setFont(new Font("宋体",Font.PLAIN,14));
		//将labpass添加到窗体上
		frame.add(labpass);
		
		//实例化JPasswordField
		JPasswordField text_password = new JPasswordField();
		//设置大小
		text_password.setPreferredSize(dim1);
		//添加到窗体
		frame.add(text_password);
		
		//实例化JButton组件
		JButton button1 = new JButton();
		//设置按键的显示内容
		Dimension dim2 = new Dimension(100,30);
		button1.setText("登录");
		button1.setFont(new Font("宋体",Font.PLAIN,14));
		//设置按键大小
		button1.setSize(dim2);
		frame.add(button1);
		
		frame.setVisible(true);//窗体可见,一定要放在所有组件加入窗体后
		
		LoginListener ll = new LoginListener(frame,text_name,text_password);
		button1.addActionListener(ll);
	}
}

test3/LoginListener.java

package test3;
 
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.awt.Font;
 
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class LoginListener implements ActionListener{
	private javax.swing.JTextField text_name;
	private javax.swing.JPasswordField text_password;
	private javax.swing.JFrame login;
	
	public LoginListener(javax.swing.JFrame login,javax.swing.JTextField text_name,javax.swing.JPasswordField text_password)
	{//获取登录界面、账号密码输入框对象
		this.login=login;
		this.text_name=text_name;
		this.text_password=text_password;
	}
	
	int i=3;//3次登录机会
	
	public void actionPerformed(ActionEvent e)
	{
		Dimension dim2 = new Dimension(100,30);
		Dimension dim3 = new Dimension(300,30);
		
		//生成新界面
		javax.swing.JFrame login2 = new javax.swing.JFrame();
		login2.setSize(400,200);
		login2.setDefaultCloseOperation(3);
		login2.setLocationRelativeTo(null);
		login2.setFont(new Font("宋体",Font.PLAIN,14));  //宋体,正常风格,14号字体
		//创建组件
		javax.swing.JPanel jp1 = new JPanel();
		javax.swing.JPanel jp2 = new JPanel();
		connect conn = new connect();
		conn.getConnection();
		
		String usernumber=text_name.getText();
		String userpassword=text_password.getText();
		Boolean flag=conn.checkAccount(usernumber, userpassword);
			if(flag)/*text_name.getText().equals("vv") && text_password.getText().equals("123456")*/
			{	
				JLabel message = new JLabel("登陆成功!");
				message.setFont(new Font("宋体",Font.PLAIN,14));  //宋体,正常风格,14号字体
				message.setPreferredSize(dim3);
				jp1.add(message);
				login2.add(jp1,BorderLayout.CENTER);
				JButton close = new JButton("确定");
				close.setFont(new Font("宋体",Font.PLAIN,14));
				//设置按键大小
				close.setSize(dim3);
				jp2.add(close);
				login2.add(jp2,BorderLayout.SOUTH);
				close.addActionListener(new ActionListener()
				{
					public void actionPerformed(ActionEvent e)
					{
						login2.dispose();
						menu menu =new menu();
						menu.go();
					}
				});
				
				login2.setResizable(false);
				login2.setVisible(true);
				
				//通过我们获取的登录界面对象,用dispose方法关闭它
				login.dispose();
				menu m =new menu();
			}
			else 
			{
				JLabel message = new JLabel("密码错误请重试");
				message.setFont(new Font("宋体",Font.PLAIN,14));  //宋体,正常风格,14号字体
				message.setPreferredSize(dim3);
				//将textName标签添加到窗体上
				jp1.add(message);
				login2.add(jp1,BorderLayout.CENTER);
				
				JButton close = new JButton("确定");
				close.setFont(new Font("宋体",Font.PLAIN,14));
				//设置按键大小
				close.setSize(dim3);
				jp2.add(close);
				login2.add(jp2,BorderLayout.SOUTH);
				
				close.addActionListener(new ActionListener()
				{
					public void actionPerformed(ActionEvent e)
					{
						login2.dispose();
					}
				});
				
				login2.setResizable(false);
				login2.setVisible(true);
				
				//通过我们获取的登录界面对象,用dispose方法关闭它
				login.dispose();
			}
	}
}

test3/connnect.java

package test3;
import java.sql.*;
public class connect 
{
	static Connection con;
	public Connection getConnection()
	{
		try{
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //数据库驱动加载
			System.out.println("数据库驱动加载成功");
		}catch(ClassNotFoundException e){
			e.printStackTrace();
		}
		try{
			con=DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;DatabaseName=*********","sa","********");//数据库连接//数据库连接,sa是登录名,后面的是数字是密码,db_jdbc是数据库名字
		System.out.println("数据库连接成功");
		}catch(SQLException e){
			e.printStackTrace();
		}
		return con;
	}
	public boolean checkAccount(String usernumber, String userpassword) {
        try 
        {
            Statement stmt = con.createStatement();
            String sqlstmt = "select userpassword from [dbo].[userinfo] where usernumber=" + "'" + usernumber + "'";
            ResultSet resultSet = stmt.executeQuery(sqlstmt);
            String passWord = "";
            while (resultSet.next()) {
                passWord = resultSet.getString("userpassword").trim();
                if (passWord == userpassword || passWord.equals(userpassword)) {
                    return true;
                } else return false;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
 
        return false;
    }
}

发布了192 篇原创文章 · 获赞 71 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_43870649/article/details/92842415