当前位置:编程学习 > JAVA >>

用户登录验证问题新手搞不定求助!

前两天在学习过程中想写一个用户登录小程序,但一直有问题请高手指点下。我用的是MySql做的数据库,现将代码提供如下:
一、错误提示
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at iframe.Lgoin$LoginAction.actionPerformed(Lgoin.java:107)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:729)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:688)
at java.awt.EventQueue$3.run(EventQueue.java:686)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:702)
at java.awt.EventQueue$4.run(EventQueue.java:700)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:699)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)


二、登录界面
package iframe;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Image;
import java.awt.Toolkit;
import javax.security.auth.login.LoginContext;
import javax.swing.JFrame;
import java.awt.color.*;
import java.awt.Container;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.UIManager;

import java.awt.image.*;
import java.io.IOException;
import javax.imageio.ImageIO;

import dao.Dao;
import model.operat;
import main.ZhuMian;
import java.awt.event.*;
import dao.Dao;
import main.ZhuMian;
import model.operat;
import model.user;
import model.xibie;
public class Lgoin extends JFrame {

//建立窗口
public JFrame jf=new JFrame("登录");
public Toolkit toolkit=Toolkit.getDefaultToolkit();
public Dimension sc=toolkit.getScreenSize();
//面板中添加组件
public Container con=jf.getContentPane();
public JLabel name1=new JLabel("用户名");
public JLabel pass1=new JLabel("密     码");
public JTextField textname=new JTextField();
public JPasswordField textps=new JPasswordField();
public JButton button1=new JButton("登陆");
public JButton button2=new JButton("重置");
public JLabel icon=new JLabel();
public Lgoin()
{
super();

con.setLayout(null);
jf.setSize(sc.width/3,sc.height*10/25);
jf.setLocation(sc.width/3,sc.height/4);
jf.setResizable(false);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//添加组件到窗口
con.setLayout(null);
jf.setSize(sc.width/3,sc.height*10/25);
jf.setLocation(sc.width/3,sc.height/4);
name1.setLocation(120,80);
name1.setSize(100,100);
pass1.setLocation(120,140);
pass1.setSize(100,100);
textname.setSize(140,20);
textname.setLocation(190,120);
textps.setSize(140,20);
textps.setLocation(190,180);
textps.setEchoChar('*');
button1.setSize(90,25);
button1.setLocation(100,230);
button2.setSize(90,25);
button2.setLocation(240,230);
con.add(name1);
con.add(pass1);
    con.add(textps);
    con.add(textname);
    con.add(button1);
    con.add(button2);
    
    
    
    //面板上部添加图片
    icon.setLocation(200,20);
    icon=new JLabel(new ImageIcon("res//login.jpg"));
    
    //ImageIcon loginIcon=("res//login.jpg");
    //imageLabel.setIcon(loginIcon);
    con.add(icon,"North");
    icon.setSize(465,60);
    icon.setOpaque(true);
    icon.setPreferredSize(new Dimension(260,60));
//登陆按钮监听事件
    button1.addActionListener(new LoginAction());
    button2.addActionListener(new ResetAction());
    
}
//登录
public class LoginAction implements ActionListener {
public void actionPerformed(final ActionEvent e) {
name1= Dao.check(name1.getText(), new String(pass1.getText()));//调用DAO方法
if (name1.getName() != null) {//判断用户名是否为null
try {
ZhuMian frame =new ZhuMian();//创建一个主窗体
frame.setVisible(true);//设置其可见
Lgoin.this.setVisible(false);//设置登录窗体为不显示
} catch (Exception ex) {
ex.printStackTrace();
}
} else {
JOptionPane.showMessageDialog(null, "请输入正确的用户名和密码!");//弹出提示框

}
}
}
//重置
private class ResetAction implements ActionListener {
public void actionPerformed(final ActionEvent e) {
textname.setText("");//设置用户名输入框为空
textps.setText("");//设置密码输入框为空
}
}
public static void main(String[] args) {
//Lgoin lgoin=new Lgoin();
try {
UIManager.setLookAndFeel(UIManager
.getSystemLookAndFeelClassName());//设置系统界面外观
new Lgoin();//登录窗口
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
三、数库代码
package dao;
import iframe.Lgoin;
import java.sql.*;
import javax.swing.JLabel;
import dao.Dao;
import main.ZhuMian;
import model.operat;
import model.xibie;
public class Dao {

private static final Lgoin Lgoin = null;
protected static String ClassName = "com.mysql.jdbc.Driver";//数据库连接驱动类
protected static String Url = "jdbc:mysql://localhost/db_ksjt;";//数据库连接URL
protected static String User = "root"; //数据库用户名
protected static String Pwd = "sa"; //数据库密码
private static Connection conn = null; //数据库连接对象
public Dao() { //默认构造函数
try {
if (conn == null) { //如果连接对象为空
Class.forName(ClassName); //加载驱动类
conn = DriverManager.getConnection(Url, User, Pwd);//获得连接对象
}
} catch (Exception ee) {
ee.printStackTrace();
}
}
//查询方法
private static ResultSet executeQuery(String sql) {
try {
if(conn==null)  new Dao();  //如果连接对象为空,则重新调用构造方法
return conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE).executeQuery(sql);//执行查询
} catch (SQLException e) {
e.printStackTrace();
return null; //返回null值
} finally {
}
}
//更新方法
private static int executeUpdate(String sql) {
try {
if(conn==null)  new Dao(); //如果连接对象为空,则重新调用构造方法
return conn.createStatement().executeUpdate(sql);//执行更新
} catch (SQLException e) {
e.printStackTrace();
return -1;
} finally {
}
}
//关闭方法
public static void close() {
try {
conn.close();//关闭连接对象
} catch (SQLException e) {
e.printStackTrace();
}finally{
conn = null; //设置连接对象为null值
}
}
//管理员登录方法
//

    public static Lgoin check( String name1,String pass1, Lgoin operat) {
     operat operater=new operat();//操作员信息对象
String sql = "select *  from gl where name='" + name1
+ "' and pass='" + pass1 + "'and admin=1";//查询字符串
ResultSet rs = Dao.executeQuery(sql);//执行查询
try {
while (rs.next()) {//如果查询到了记录
operater.setId(rs.getString("id"));//设置操作员编号
operater.setName(rs.getString("name"));//设置操作员用户名
//operater.setGrade(rs.getString("admin"));//设置操作员等级
operater.setPassword(rs.getString("password"));//设置管理员密码
}
} catch (Exception e) {
e.printStackTrace();
}
Dao.close(); //关闭连接对象
return operat;//返回操作员信息对象
}
public static JLabel check(String text, String string) {
// TODO Auto-generated method stub
return null;

}
--------------------编程问答-------------------- Lgoin.java:107 --------------------编程问答-------------------- Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at iframe.Lgoin$LoginAction.actionPerformed(Lgoin.java:107)
就是这行,其它的和你没关系 --------------------编程问答-------------------- LZ要学会看错误...... --------------------编程问答-------------------- 谢谢你们提醒啊,刚学会 --------------------编程问答-------------------- 不过能给点错误修改的提示吗? --------------------编程问答-------------------- debug一下看看那一行为什么会nul。 --------------------编程问答-------------------- 又见空指针异常!
新手的第一个老师! --------------------编程问答-------------------- 谢谢楼上的提示,但是有个新问题出现了,现在提示这样com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'admin' in 'where clause'java.lang.NullPointerException
at dao.Dao.check(Dao.java:107)
at iframe.Lgoin$LoginAction.actionPerformed(Lgoin.java:107) --------------------编程问答--------------------
引用 8 楼 freeskl 的回复:
谢谢楼上的提示,但是有个新问题出现了,现在提示这样com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'admin' in 'where clause'java.lang.NullPointerException
at dao.Dao.check(Dao.java:107)
at iframe.Lgoin$LoginAction.actionPerformed(Lgoin.java:107)

这个不又是个空指针么。。。。查找你的sql语句  Unknown column 'admin' in 'where clause  有关admin这个字段的sql。 --------------------编程问答-------------------- 除
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,