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;
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章