java 與資料庫連線 實現使用者的註冊和登入
阿新 • • 發佈:2019-02-19
package com.lijianrong.Mysql.cn; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; import java.io.*; import java.sql.*; /** *作者:rong * 功能:與資料庫中的使用者資料進行匹配 匹配成功的話顯示成功對話方塊。 * 2016-7-17 */ public class LoginFrame { // 登入介面的GUI元件 private JFrame jf = new JFrame("登入"); private JPanel jp1=new JPanel(); private JPanel jp2=new JPanel(); private JPanel jp3=new JPanel(); private JButton jb1=new JButton("註冊"); private JTextField userField = new JTextField(20); private JTextField passField = new JTextField(20); private JButton loginButton = new JButton("登入"); public void init()throws Exception { // 載入驅動 Class.forName("com.mysql.jdbc.Driver"); // 為登入按鈕新增事件監聽器 loginButton.addActionListener(e -> { // 登入成功則顯示“登入成功” System.out.println(userField.getText() +"\t"+passField.getText()+"\t"+validate(userField.getText(), passField.getText())); if (validate(userField.getText(), passField.getText())) { JOptionPane.showMessageDialog(jf, "登入成功"); } // 否則顯示“登入失敗” else { JOptionPane.showMessageDialog(jf, "登入失敗"); } }); jb1.addActionListener(e -> { // 登入成功則顯示“登入成功” System.out.println(userField.getText() +"\t"+passField.getText()+"\t"+validate(userField.getText(), passField.getText())); try { cheak(userField.getText(),passField.getText()); } catch (Exception e1) { // TODO Auto-generated catch block e1.printStackTrace(); } }); class mylister extends WindowAdapter{ @Override public void windowClosing(WindowEvent e) { System.exit(0); } } jf.addWindowListener(new mylister()); jp1.add(new Label("使用者名稱:")); jp1.add(userField); jp2.add(new Label("密碼:")); jp2.add(passField); jp3.add(jb1); jp3.add(loginButton); jf.add(jp3,BorderLayout.SOUTH); jf.add(jp1,BorderLayout.NORTH); jf.add(jp2 , BorderLayout.CENTER); jf.pack(); jf.setVisible(true); } //註冊使用者和密碼 (1)首先先檢查資料庫中是否有相應的資料,如果有的話提示"該使用者存在,請直接登入。" private void cheak(String userName, String userPass) throws Exception { if (validate(userField.getText(), passField.getText())) { JOptionPane.showMessageDialog(jf, "您已經有賬號了請直接登入。"); } else { String sql="insert ignore into student values(?,?)"; Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?" + "user=root&password=768696&useUnicode=true&characterEncoding=UTF8"); PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, userName); pstmt.setString(2, userPass); pstmt.executeUpdate(); JOptionPane.showMessageDialog(jf, "註冊成功請登入。。。。"); } } //判斷資料庫中是否有該使用者名稱和密碼 private boolean validate(String userName, String userPass) { String sql="select *from student where student.name='"+userName+"' and student.password='"+userPass+"'"; try( Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?" + "user=root&password=768696&useUnicode=true&characterEncoding=UTF8"); Statement pstmt = conn.createStatement(); ResultSet rs=pstmt.executeQuery(sql)) { //如果查詢的ResultSet裡有超過一條的記錄,則登入成功 if (rs.next()) { return true; } } catch(Exception e) { e.printStackTrace(); } return false; } public static void main(String[] args) throws Exception { new LoginFrame().init(); } }