先实现简单的登录界面,这里用了两个类,一个UI(主界面)类,一个连接数据库方法类
之间需要添加驱动和环境变量,具体的准备工作请看前人的工作
https://www.cnblogs.com/chlyA-F/p/6075675.html
UI类
package ui;
import java.awt.event.*;
import javax.swing.*;
import conn.connect;
import ui.MainFrame;
//导入相应的包
//import java.awt.event.ActionListener;
//import java.awt.event.ActionEvent;
//import javax.swing.JButton;
//import javax.swing.JFrame;
//import javax.swing.JLabel;
//import javax.swing.JPanel;
//import javax.swing.JPasswordField;
//import javax.swing.JTextField;
public class ui extends JFrame implements ActionListener {
/**
*
*/
private static final long serialVersionUID = 2373066478342237427L;
JPanel jp = new JPanel();
JLabel[] jlArray = { new JLabel("用户名"), new JLabel("口 令"), new JLabel("") };
JButton[] jbArray = { new JButton("登陆"), new JButton("退出") };
JTextField jtxtName = new JTextField();
JPasswordField jtxtPassword = new JPasswordField();
public ui() { // 构造方法
jp.setLayout(null);
for (int i = 0; i < 2; i++) {
jlArray[i].setBounds(30, 20 + i * 50, 80, 26);
jbArray[i].setBounds(50 + i * 110, 130, 80, 26);
jp.add(jlArray[i]);
jp.add(jbArray[i]);
jbArray[i].addActionListener(this);
}
jtxtName.setBounds(80, 20, 180, 30);
jp.add(jtxtName);
jtxtName.addActionListener(this);
jtxtPassword.setBounds(80, 70, 180, 30);
jp.add(jtxtPassword);
jtxtPassword.setEchoChar('*');
jtxtPassword.addActionListener(this);
jlArray[2].setBounds(10, 180, 300, 30);
jp.add(jlArray[2]);
this.add(jp);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("登陆");
this.setResizable(false);
this.setBounds(800, 370, 300, 250);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e) { // 事件监听方法
boolean flag;
String username = jtxtName.getText();
String password = String.valueOf(jtxtPassword.getPassword());
flag = connect.validator(username, password);
if (e.getSource() == jtxtName) {
jtxtPassword.requestFocus();
} else if (e.getSource() == jbArray[1]) {
System.exit(0);}
else {
if (flag) {
setVisible(false);
new MainFrame(username).setVisible(true);
} else
jlArray[2].setText("登陆错误");
}
}
public static void main(String[] args) {// main方法
new ui();
}
}
数据库连接类
package conn;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
public class connect {
public static boolean validator(String username, String password) {
Connection conn;
Statement stmt;
ResultSet rs;
boolean flag = false;
String url = "jdbc:sqlserver://localhost:1433;DatabaseName=student;";
username=TransactSQLInjection(username);
password=TransactSQLInjection(password);
String sql = "select * FROM dbo.usercode where U_id='" + username + "'and Password='" + password + "'";
try {
// 连接数据库
conn = DriverManager.getConnection(url, "sa", "root");
// conn = DriverManager.getConnection(url, "user8", "u0008");// 建立Statement对象
stmt = conn.createStatement();
/**
* Statement createStatement() 创建一个 Statement 对象来将 SQL 语句发送到数据库。
*/
// 执行数据库查询语句
rs = stmt.executeQuery(sql);
/**
* ResultSet executeQuery(String sql) throws SQLException 执行给定的 SQL 语句,该语句返回单个
* ResultSet 对象
*/
while (rs.next()) {
if (rs != null) {
flag = true;
break;
}
}
if (rs != null) {
rs.close();
rs = null;
}
if (stmt != null) {
stmt.close();
stmt = null;
}
if (conn != null) {
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
System.out.println("数据库连接失败");
}
return flag;
}
public static String TransactSQLInjection(String str){
return str.replaceAll("([';])+|(--)+","");//防止数据库注入的代码
}
public static void main(String[] args) {
}
}