- 论坛徽章:
- 0
|
做一个用户密码验证,但一点击"确定"按钮就会有错误提示,不知道怎么错的,改了数据库驱动也不行.错误提示如下:
getResult-------java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]在关键字 'user' 附近有语法错误。
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at login$3.actionPerformed(login.java:69)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:25
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:548
at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
at java.awt.Component.processEvent(Component.java:5253)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3955)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Window.dispatchEventImpl(Window.java:177
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
这是界面代码:
import sql.*;
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class login extends JFrame{
ResultSet rs;
private DBManager db = new DBManager();
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
JPanel panel3 = new JPanel();
//BorderLayout borderLayout1 = new BorderLayout();
Container con=getContentPane();
//getContentPane().setLayout(null);
JLabel jLabel2 = new JLabel();
JButton jButtonCancel = new JButton();
JLabel jLabel1 = new JLabel();
JTextField jTextFieldusername = new JTextField();
JButton jButtonOK = new JButton();
JPasswordField jPasswordold = new JPasswordField();
public login() {
setSize(260,150);
setTitle("用户登录" ;
setVisible(true);
setResizable(false);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);}});
con.add(panel1,BorderLayout.NORTH);
con.add(panel2,BorderLayout.CENTER);
con.add(panel3,BorderLayout.SOUTH);
panel1.add(jLabel1);
panel1.add(jTextFieldusername);
panel2.add(jLabel2);
panel2.add(jPasswordold);
panel3.add(jButtonOK);
panel3.add(jButtonCancel);
jLabel2.setFont(new java.awt.Font("Dialog",0,16));
jLabel2.setText("密码" ;
jButtonCancel.setFont(new java.awt.Font("Dialog",0,16));
jButtonCancel.setText("取消" ;
jButtonCancel.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){dispose();}});
jLabel1.setFont(new java.awt.Font("Dialog",0,16));
jLabel1.setText("用户名" ;
jTextFieldusername.setFont(new java.awt.Font("Dialog",0,16));
jTextFieldusername.setText("" ;
jTextFieldusername.setSize(30,20);
jPasswordold.setText("" ;
jPasswordold.setSize(30,20);
jButtonOK.setFont(new java.awt.Font("Dialog",0,16));
jButtonOK.setText("确定" ;
jButtonOK.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(jTextFieldusername.getText().trim()=="" {JOptionPane.showMessageDialog(null,"用户名不可为空!" ;return;}
if(jPasswordold.getText().trim()=="" {JOptionPane.showMessageDialog(null,"密码不可为空!");return;}
String strSQL;
strSQL = "select * from user where username='" + jTextFieldusername.getText().trim() + "' and password='" + jPasswordold.getText().trim() + "'";
rs=db.getResult(strSQL);
//if(rs.getString("username")!=jTextFieldusername.getText()||rs.getString("password")!=jPasswordold.getText())
boolean isexist = false;
try{
isexist=rs.first();
}catch(SQLException ex1){}
if(!isexist){JOptionPane.showMessageDialog(null,"用户名不存在,或密码不正确!");/*login.setEnable(false,false);*/}
else{try{
rs.first();
dispose();
}catch(SQLException ex){}
}}});
}//login的构造方法
public static void main(String args[]){
login f = new login();
f.show();
}
}//login.class
这是连接数据库代码:
package sql;
import java.sql.*;
public class DBManager {
ResultSet rs;
String strurl="jdbc dbc:myRecorder";
public DBManager(){
}
public ResultSet getResult(String sql){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn = DriverManager.getConnection(strurl);
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSet rs = stmt.executeQuery(sql);
return rs;
}catch(Exception e){
System.out.println("getResult-------"+e.toString());
return null;
}
}
public boolean executeSql(String sql){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn = DriverManager.getConnection(strurl);
Statement stmt = conn.createStatement();
stmt.executeUpdate(sql);
conn.commit();
return true;
}catch(Exception e){
System.out.println("executeSql-------"+e.toString());
return false;
}
}
} |
|