目錄
GUI連接Sql Server數據庫實現用戶
注意:這個連接需要一個jar包,下載之后需要導入到自己的java項目加載,用於java連接數據庫
地址:鏈接:https://pan.baidu.com/s/1yCxfo0iNvMa1P0xPqhakDg 提取碼:1111
步驟1(數據庫操作)
--創建數據庫
create database jdbcmmsql
use jdbcmmsql
--創建表
create table user_t
(
id int not null primary key,
name varchar(20) not null,
pwd varchar(32) not null,
sex char(2),
age int
)
--插入數據
insert into user_t
values
(1,'123','123456','女',22)
步驟2(java操作)
2.1構建java與Sql server的連接
package Gui.db;
import java.sql.Connection;
import java.sql.DriverManager;
public class DbHelper {
Connection conn = null;
public DbHelper() {
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//這里要根據自己的 庫名,賬號,密碼連接。
conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=jdbcmmsql", "sa", "123456Mssql");
} catch (Exception e) {
e.printStackTrace();
}
}
public Connection getConn() {
return conn;
}
}
2.2創建實體類
package Gui.entity;
public class User {
private int id;
private String name;
private String pwd;
private String sex;
private int age;
public User() {
}
public User(int id, String name, String pwd, String sex, int age) {
this.id = id;
this.name = name;
this.pwd = pwd;
this.sex = sex;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
2.3接口層(dao)
package Gui.dao;
import Gui.entity.User;
import java.util.List;
public interface UserDao {
//增
public boolean addEmp(User emp);
//刪
public int delEmp(int id);
//改
public int updEmp(User emp);
//單查
public User findone(String user,String pwd);
//查
public List<User> findAll();
}
接口實現類
只實現了一部分
package Gui.dao;
import Gui.db.DbHelper;
import Gui.entity.User;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class UserDaoImpl implements UserDao{
Connection conn;
PreparedStatement ps;
ResultSet rs;
//增加
public boolean addEmp(User user) {
boolean flag = false;
conn = new DbHelper().getConn();
String sql = "insert into user_t(id,name,pwd,sex,age) values(?,?,?,?,?)";
try {
ps = conn.prepareStatement(sql);
ps.setInt(1, user.getId());
ps.setString(2, user.getName());
ps.setString(3, user.getSex());
ps.setInt(4, user.getAge());
ps.setInt(5, user.getAge());
if(ps.executeUpdate()>0) {
flag = true;
}
} catch (SQLException e) {
e.printStackTrace();
}
return flag;
}
//刪除
public int delEmp(int id) {
return 0;
}
//修改
public int updEmp(User emp) {
return 0;
}
//單查,可用於登錄
public User findone(String usera, String userpwd) {
User user_t = null;
conn = new DbHelper().getConn();
String sql = "select name,pwd from user_t";
try {
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while(rs.next()){
user_t = new User();
user_t.setName(rs.getString("name"));
user_t.setPwd(rs.getString("pwd"));
}
} catch (SQLException e) {
e.printStackTrace();
}
return user_t;
}
//全查
public List<User> findAll() {
List<User> ul = new ArrayList<User>();
User user = null;
conn = new DbHelper().getConn();
String sql = "select * from user_t";
try {
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while (rs.next()) {
user = new User();
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
user.setPwd(rs.getString("pwd"));
user.setSex(rs.getString("sex"));
user.setAge(rs.getInt("age"));
ul.add(user);
}
} catch (SQLException e) {
e.printStackTrace();
}
return ul;
}
}
2.4登錄跳轉的新窗口
package Gui.Login;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/*
登錄成功打開此窗口,有一個案例小游戲
*/
public class LoginYes {
public LoginYes(){
JFrame f = new JFrame("你登陸成功了,來玩個小游戲吧😀");
f.setLayout(new FlowLayout());
f.setBounds(300,400,500,200);
//創建Lable標簽對象
JButton j1 = new JButton("請輸入0-4的數字");
//創建輸入框
TextField tf = new TextField(40);
f.add(tf);
f.add(j1);
tf.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e1) {
j1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e2) {
char ch = e1.getKeyChar();
switch (ch){
case '0':
j1.setText("zero");
break;
case '1':
j1.setText("one");
break;
case '2':
j1.setText("two");
break;
case '3':
j1.setText("three");
break;
case '4':
j1.setText("four");
break;
}
}
});
}
});
f.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
f.setVisible(true);
}
}
2.5運行類
package Gui;
import Gui.Login.LoginNo;
import Gui.Login.LoginYes;
import Gui.dao.UserDaoImpl;
import Gui.entity.User;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Test {
public static void main(String[] args) {
//創建JFrame實例
JFrame jf = new JFrame("登陸界面");
//設置框架的寬度和高度
jf.setSize(350,200);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//創建面板,類似於HTML的div標簽
JPanel panel = new JPanel();
//添加面板
jf.add(panel);
//調用用戶定義的方法並添加組件到面板
placeComponents(panel);
//設置界面可見
jf.setVisible(true);
}
private static void placeComponents(JPanel panel){
panel.setLayout(null);
//創建JLabel
JLabel userlabel = new JLabel("賬號:");
userlabel.setBounds(10,20,80,25);
panel.add(userlabel);
//創建文本域用於用戶輸入
JTextField userText = new JTextField(20);
userText.setBounds(100,20,165,25);
panel.add(userText);
//輸入密碼的文本域
JLabel passwordLabel = new JLabel("密碼:");
passwordLabel.setBounds(10,50,80,25);
panel.add(passwordLabel);
//密碼框--未用真正密碼框實現
JTextField passwordText = new JTextField(20);
passwordText.setBounds(100,50,165,25);
panel.add(passwordText);
//創建登錄按鈕
JButton loginButton = new JButton("登錄");
loginButton.setBounds(10,80,80,25);
panel.add(loginButton);
loginButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String user_str= userText.getText();
String user_pwd = passwordText.getText();
System.out.println(user_str);
System.out.println(user_pwd);
UserDaoImpl ud = new UserDaoImpl();
User u = ud.findone(user_str,user_pwd);
if(u.getName().equals(user_str) && u.getPwd().equals(user_pwd)){
new LoginYes();
}else {
//登錄失敗這里會彈出來一個報錯的小對話框
JOptionPane.showMessageDialog(null, "請檢查賬號和密碼", "登錄失敗", JOptionPane.ERROR_MESSAGE);
}
}
});
}
}