JAVA 登陆界面出异常,大家看看,
主函数是package systemmanger;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Main extends JFrame
{
JFrame f;
private JLabel name=new JLabel("用 户 名:");
private JLabel psw=new JLabel("密 码:");
private JTextField tf1=new JTextField(10);
private JTextField tf2=new JTextField(10);
private JButton b1=new JButton("确定");
private JButton b2=new JButton("取消");
public Main() {
setLayout(new FlowLayout());
add(name);
add(tf1);
add(psw);
add(tf2);
add(b1);
b1.addActionListener(new actionthing());
add(b2);
b2.addActionListener(new actionthing());
setBounds(400,300,200,150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
private class actionthing implements ActionListener //throws Exception
{
public void actionPerformed (ActionEvent e)
{
UserInfor ui=null;
if(e.getSource() == b1)
{
String nameStr=tf1.getText();
String pwdStr=tf2.getText();
if(nameStr.equals("")||pwdStr.equals(""))
{
JOptionPane.showConfirmDialog(Main.this,"帐号或密码不能为空","错误",JOptionPane.OK_CANCEL_OPTION,JOptionPane.ERROR_MESSAGE);
}else
{
try
{
ui=new UserInfor();
}catch(Exception g) { System.out.println("数据库连结失败"); }
try
{
boolean temp=ui.isRight(nameStr,pwdStr);
ui.closeConnection();
if(temp)
{
System.out.println("密码有效");
}
}//catch(Exception g){ System.out.println("密码错误哦..");}
catch(Exception g){ g.printStackTrace();}
}
}
else if(e.getSource() ==b2)
{
tf1.setText("");
tf2.setText("");
}
}
}
public static void main(String[] args)
{
// TODO code application logic here
new Main();
}
}
连接数据库调用的类
package systemmanger;
import java.sql.*;
import java.util.*;
import org.omg.CORBA.COMM_FAILURE;
public class UserInfor
{
private Connection con;
private String url="jdbc:microsoft:sqlserver://192.168.0.118:1433;DatabaseName=abc";
private String user="sa";
private String password="";
/** Creates a new instance of UserInfor */
public void UserInfor() throws ClassNotFoundException,SQLException,InstantiationException,IllegalAccessException
{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
con = DriverManager.getConnection(url,user,password);
Statement sql=con.createStatement();
ResultSet rs= sql.executeQuery("select * from user2 ");
}
public boolean isRight(String name,String psd) throws Exception
{
String Select="select * from user2 where name = '"+name+"'&& password = '"+psd+"'";
Statement stm = con.createStatement();
ResultSet rst = stm.executeQuery(Select);
while(rst.next())
{
return true;
}
System.out.println("数据库测试成功。");
return false;
}
public void closeConnection()
{
try{
con.close();
}catch(Exception e)
{
e.printStackTrace();
}
}
}
里面的user2 是数据库里面的表名 name 和 password 是表中的两个选取项。
函数里面的两个参数,是从登陆窗口传送过来的输入数据。
可是,当我每次输入数据后,一点确定按钮,编译器就会报。
java.lang.NullPointerException
这个异常,请问下, 这是什么原因啊
知道的说下.
谢谢了..
----------------解决方案--------------------------------------------------------
唉,怎么就是没有人帮下我啊
对了,这几天,通过我的测试,基本上我知道是数据库的问题
SQL SERVER2000 的数据链接。我基本上别人说的方法都试过了,除了打SP3的补丁。
对了,SP3的丁是怎么安装的,知道的说下哦。。
3Q 3Q
----------------解决方案--------------------------------------------------------
你所用的数据表里面有没有数据哦
----------------解决方案--------------------------------------------------------
那是空指针异常,可能是哪个变量没有声明!在程序里设置一个断点然后用DEBUG模式运行一下!看一下程序运行到哪里出异常的!
[[italic] 本帖最后由 lgdcky 于 2007-12-20 13:42 编辑 [/italic]]
----------------解决方案--------------------------------------------------------
我编译都成问题;
前提:
path = D:\Program Files\Java\jdk1.5.0\bin
classpath = ,;
编译 框 中:
G:\学习\SSD\SSD3\课外>javac UserInfor.java
G:\学习\SSD\SSD3\课外>javac Main.java
Main.java:34: connot find symbol
symbol :class UserInfor
...
下面就是哪里出错,都是不能找到class UserInfor。
----------------解决方案--------------------------------------------------------
哈,我吧 package systemmanger; 语句注释掉就好了
是不是哪里还要设置package路径什么的啊,怎么设 ?
我是用 DOS 编译 运行的。
----------------解决方案--------------------------------------------------------
3楼说,我所用的数据表里面没有数据,是什么意思啊??
----------------解决方案--------------------------------------------------------