import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
import java.util.*;
public class Database implements ActionListener{
//登录面板
JFrame logframe;
JLabel nameLabel;
JLabel passwordLabel;
JTextField name;
JPasswordField password;
//注册面板
JFrame regframe;
JLabel newuserLabel;
JLabel newpasswordLabel;
JTextField newuser;
JPasswordField newpassword;
JButton quit;
JButton confrim;
JButton b_login ;
JButton b_regedit;
String dataurl="jdbc:odbc:DBtest";
public static void main(String[] args) throws Exception{
new Database();
}
public Database(){
//登录面板设计
//背景图片
JPanel logpanel =new JPanel() {
@Override
public void paintComponent(Graphics g) {
ImageIcon background=new ImageIcon("2.jpg");
g.drawImage(background.getImage(), 0, 0, getWidth(), getHeight(), null);
}
};
nameLabel=new JLabel("用户名:",SwingConstants.RIGHT);
passwordLabel=new JLabel("密码:",SwingConstants.RIGHT);
name=new JTextField(15);
password=new JPasswordField(15);
b_login=new JButton("登陆");
b_regedit=new JButton("注册");
logpanel.add(nameLabel);
logpanel.add(name);
logpanel.add(passwordLabel);
logpanel.add(password);
logpanel.add(b_regedit);
b_regedit.addActionListener(this);
logpanel.add(b_login);
b_login.addActionListener(this);
logframe.getContentPane().add(logpanel,"center");
logframe.setTitle("登陆界面");
logframe.setLocation(400, 400);
logframe.setSize(250,250);
logframe.setResizable(true);
logframe.setVisible(true);
logframe.setIconImage(Toolkit.getDefaultToolkit().getImage("1.jpg"));
logframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//注册面板设计
JPanel regpanel=new JPanel();
newuserLabel=new JLabel("用户名:",SwingConstants.RIGHT);
newpasswordLabel=new JLabel("密码:",SwingConstants.RIGHT);
newuser=new JTextField(15);
newpassword=new JPasswordField(15);
quit=new JButton("返回");
quit.addActionListener(this);
confrim=new JButton("确认");
quit.addActionListener(this);
regpanel.add(newuserLabel);
regpanel.add(newpasswordLabel);
regpanel.add(newuser);
regpanel.add(newpassword);
regpanel.add(quit);
regpanel.add(confrim);
regframe.getContentPane().add(regframe,"Center");
regframe.setTitle("注册界面");
regframe.setLocation(400, 400);
regframe.setSize(250,250);
regframe.setResizable(true);
regframe.setVisible(false);
logframe.setIconImage(Toolkit.getDefaultToolkit().getImage("1.jpg"));
regframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
@Override
public void actionPerformed(ActionEvent e){
try{
if(e.getSource()==b_login){
login();
}
else if(e.getSource()==b_regedit){
regframe.setVisible(false);
regedit();
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
private void login() throws Exception{
Connection con;
Statement state;
ResultSet rs;
Properties pro = new Properties();
pro.put("charSet", "GBK");//汉字乱码处理
if((name!=null)&&(password!=null)){
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//加载驱动
con=DriverManager.getConnection(dataurl,pro);//链接
state=con.createStatement();//创建Statement对象用于对数据库的操作
rs=state.executeQuery("SELECT * FROM students_info");
boolean is_ok = false;
while(rs.next()){
if((name.getText().equals( rs.getString(1) ))&&
(new String(password.getPassword()).equals(rs.getString(2)))){
is_ok = true;
break;
}
}
if (is_ok) {
JOptionPane.showMessageDialog(logframe,"登陆成功!" );
} else {
JOptionPane.showMessageDialog(logframe.getContentPane(),"用户名或密码错误,请重新输入","错误提示",
JOptionPane.ERROR_MESSAGE);
name.setText("");
password.setText("");
}
rs.close();
state.close();
con.close();
}
}
private void regedit() throws Exception{
Properties pro = new Properties();
pro.put("charSet", "GBK");
Connection con=DriverManager.getConnection(dataurl,pro);
Statement state =con.createStatement();
ResultSet rs;
String r1;
rs=state.executeQuery("SELECT * FROM students_info");
boolean existed = false;
while(rs.next()){
if((newuser.getText().trim()).equals(rs.getString(1))){
existed = true;
break;
}
}
if(existed){
JOptionPane.showMessageDialog(logframe.getContentPane(),"用户已存在,请重新输入","警告提示",
JOptionPane.WARNING_MESSAGE);
name.setText("");
password.setText("");
rs.close();
}else{
r1 = "insert into students_info(user,mima) values('"
+ newuser.getText() + "','"
+ new String(newpassword.getPassword()) + "');";
state.executeUpdate(r1);
JOptionPane.showMessageDialog(logframe.getContentPane(),"注册成功");
}
state.close();
con.close();
}
}
错误信息
Exception in thread "main" java.lang.NullPointerException
at database.Database.<init>(Database.java:70)
at database.Database.main(Database.java:41)
Java Result: 1