package login;
/*
*此代码是网上转载的
*步骤1 创建窗体以及布局大小
*步骤 2 添加事件监听器,文本监听和按钮监听
*步骤 3 sql server 2008做好连接前的准备(创建一个数据库,创建一个表,名称自定义),然后导入jdbc包,用java语言写好接口,以及创建与数据库连接的方法
*读者一定要仔细阅读并掌握这段代码,这个实例很重要很经典。一定要弄懂每层的含义。
*/
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import com.microsoft.sqlserver.jdbc.SQLServerConnection;
public class LoginForm extends JFrame {
/**
* Launch the application
* @param args
*/
public static void main(String args[]) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
LoginForm frame = new LoginForm();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame
*/
public LoginForm() {
super();
getContentPane().setLayout(null);
setBounds(100, 100, 419, 308);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JLabel label = new JLabel();
label.setText("通讯录(测试版)");
label.setBounds(22, 25, 153, 38);
getContentPane().add(label);
final JLabel label_1 = new JLabel();
label_1.setText("账号:");
label_1.setBounds(53, 89, 53, 27);
getContentPane().add(label_1);
final JLabel label_2 = new JLabel();
label_2.setText("密码:");
label_2.setBounds(53, 144, 53, 27);
getContentPane().add(label_2);
final JTextField tf= new JTextField(10);
tf.setBounds(123, 89, 185, 27);
getContentPane().add(tf);
final JPasswordField ps= new JPasswordField(15);
ps.setBounds(125, 144, 183, 27);
getContentPane().add(ps);
final JButton button = new JButton();
button.setText("登录");
button.setBounds(86, 209, 106, 28);
getContentPane().add(button);
button.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
loginTip(tf, ps);
}
});
final JButton button_1 = new JButton();
button_1.setText("退出");
button_1.setBounds(233, 209, 106, 28);
getContentPane().add(button_1);
button_1.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
dispose();
System.exit(0);
}
});
//
}
private void loginTip(JTextField tf,JPasswordField ps){
String user = tf.getText();
String password = ps.getText();
if(user.equals("")){
JOptionPane.showMessageDialog(null,"账号不能为空","Warning",JOptionPane.WARNING_MESSAGE);
return;
}
if(password.equals("")){
JOptionPane.showMessageDialog(null,"密码不能为空","Warning",JOptionPane.WARNING_MESSAGE);
return;
}
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url = "jdbc:sqlserver://localhost:1433;DatabaseName=sjk2";
String use = "sa";
String passwor = "sql";
Connection con = DriverManager.getConnection(url,use,passwor);
java.sql.Statement stmt=con.createStatement();
String sql = "select * FROM LoginFrom WHERE userman='"+ user +"' and topassword='"+ password +"'" ;
ResultSet rs=stmt.executeQuery(sql);
if (rs.next()) {
// TODO: 如果数据校验成功 显示主界面 并关闭登录界面
JOptionPane.showMessageDialog(this, "成功登录", "提示",
JOptionPane.INFORMATION_MESSAGE);
this.dispose();
} else {
JOptionPane.showMessageDialog(this, "帐号或密码错误!", "警告",
JOptionPane.WARNING_MESSAGE);
ps.requestFocus(); // 密码框选中
}
}
catch(Exception e){
e.printStackTrace();
}
}
}
大家注意几个关键的地方,一定要弄清楚为何要这么写!