java数据库连接成功却显示unknown source


程序主要部分是数据库连接和查找操作,数据库连接我用另一个工程测试是没问题的,然后查找操作单测试也没问题,不知道问题出在哪,是swing界面有问题吗
报错如下:
java.lang.NullPointerException
at login$1pressjBut1.actionPerformed(login.java:45)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
import java.awt.Rectangle;
import java.sql.Date;
import java.util.*;
public class login  extends JFrame {
private static Connection con = null;
JLabel jLab1=new JLabel("手机号:");
JLabel jLab2=new JLabel("密码:");
JLabel jLab3=new JLabel("还没有注册?请点击此处");
JLabel jLab4=new JLabel("用户名不存在!!!");
JLabel jLab5=new JLabel("密码错误!!!");
JScrollPane jScrollP1=new JScrollPane();
JScrollPane jScrollP2=new JScrollPane();
JTextArea jTextA1=new JTextArea();
JTextArea jTextA2=new JTextArea();
JButton jBut1=new JButton("登录");
JButton jBut2=new JButton("注册");
JButton jBut3=new JButton("修改密码");
  public Connection getConnection() {
  String drivername="com.microsoft.sqlserver.jdbc.SQLServerDriver";
String dburl="jdbc:sqlserver://localhost:1433;DatebaseName=account";
String username="sa";
String password="123456";
try {
Class.forName(drivername);
con=DriverManager.getConnection(dburl,username,password);

 catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
   return con;
  }

public login(){

class pressjBut1 implements ActionListener{
public void actionPerformed(ActionEvent e){
String sel="use account select count(*) from user_info where phone_no='"+jTextA1.getText()+"'";
String sel1="use account select password from user_info where phone_no='"+jTextA2.getText()+"'";
try {
Statement st=con.createStatement();
ResultSet rs=st.executeQuery(sel);
int count=0;
while(rs.next()) {
count=rs.getInt(1);
}
if(count==0) {
jLab4.setVisible(true);//显示用户名不存在
}
else {
try {
Statement st1=con.createStatement();
ResultSet rs1=st1.executeQuery(sel1);
if(jTextA1.getText()==rs1.getString(sel1)) {
new record();
dispose();
}
else {
jLab5.setVisible(true);//显示密码错误
}
}catch(Exception e2) {
e2.printStackTrace();
}  
}
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

//try {
// Statement 
//}
/* 该处需添加代码!!!
 * 对输入的jTextA1中的文本在数据库手机号中进行比对,
 * 未找到则显示jLab4("用户名不存在!!!")   (jLab4.setVisible(true);)
 * 找到则对jTextA2中的文本进行手机号的密码进行匹配,
 * 成功打开下一个记账窗口并关闭本窗口        (new 记账();dispose();)
 * 失败则显示jLab5("密码错误!!!")   (jLab5.setVisible(true);)
 */
}
}

class pressjBut2 implements ActionListener{
public void actionPerformed(ActionEvent e){
new register();//打开注册窗口
}
}

class pressjBut3 implements ActionListener{
public void actionPerformed(ActionEvent e){
new update();//打开修改密码窗口
}
}

getContentPane().setLayout(null);
jLab1.setBounds(10, 30, 60, 20);
jLab2.setBounds(10, 70, 60, 20);
jLab3.setBounds(60, 100, 165, 20);
jLab4.setBounds(60, 5, 90, 20);
jLab5.setBounds(60, 5, 70, 20);
jLab4.setForeground(Color.red);
jLab5.setForeground(Color.red);
jScrollP1.setBounds(60, 25, 210, 30);
jScrollP2.setBounds(60, 65, 210, 30);
jScrollP1.getViewport().add(jTextA1);
jScrollP2.getViewport().add(jTextA2);
jBut1.setBounds(60, 130, 107, 40);
jBut2.setBounds(210, 95, 60, 30);
jBut3.setBounds(173, 130, 97, 40);
jBut1.addActionListener(new pressjBut1());
jBut2.addActionListener(new pressjBut2());
jBut3.addActionListener(new pressjBut3());
getContentPane().add(jLab1);
getContentPane().add(jLab2);
getContentPane().add(jLab3);
getContentPane().add(jLab4);
getContentPane().add(jLab5);
jLab4.setVisible(false);
jLab5.setVisible(false);
getContentPane().add(jBut1);
getContentPane().add(jBut2);
getContentPane().add(jBut3);
getContentPane().add(jScrollP1);
getContentPane().add(jScrollP2);
setTitle("登录");
setLocation(800, 400);
setSize(295, 215);
setVisible(true);

class loginwindowAdapter extends WindowAdapter {
    public void windowClosing(WindowEvent e){
     System.exit(-1);//关闭程序
    }
}
}
public static void main(String[] args) {
new login();
}
 
}

2 个解决方案

#1


感觉写的不太规范呀,关闭数据库相关的语句和打开数据库的语句最好是保持一致

#2


空指针

Statement st=con.createStatement();
这里的con可能还是null
智能推荐

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告