连接数据库时一个NullPointerException的错误.情指教
我在一个连接数据苦的文件中,有一个NullPionterException的错误.源码如下.请指教谢谢!
import java.sql.*;
public class ConsumerMy extends Thread {
private CubbyHoleMy cubbyhole;
private String name,id,subject,score,rescore,term;
private String sql,output;
sql_data sqldata;
ResultSet rs = null;
public ConsumerMy(CubbyHoleMy c) {
cubbyhole = c;
}
public void run(){
try{
rs = sqldata.executeQuery("SELECT * FROM StTable");//错误行
while (rs.next()) {
name = rs.getString("name");
System.out.println("姓名: " + name);
}
System.out.println("rs.next()= null");
rs.close();
}
catch(SQLException ex)
{System.out.println("Got SQLException: " + ex.toString());}
catch(NullPointerException ex)
{System.out.println("in the Null Pointer Exception");}
}
}
sql_data里面定义了数据库连接和executeQuery() 应该都没有问题.
问题点数:100、回复次数:15Top
1 楼sptbo(竹蜻蜓)回复于 2004-05-01 21:05:13 得分 0
-----------------------------------sql_data.java---------------------------------
import java.sql.*;
public class sql_data
{
String sDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
String sConnStr = "jdbc:odbc:StTable";
Connection conn = null;
ResultSet rs = null;
public sql_data() //构造函数
{
try
{
Class.forName(sDBDriver);
}
catch(java.lang.ClassNotFoundException e)
{
System.err.println("sqldata():" + e.getMessage());
}
}
public void executeInsert(String sql) //加入数据
{
try{
conn = DriverManager.getConnection(sConnStr);
Statement stmt = conn.createStatement();
stmt.executeUpdate(sql);
}catch(SQLException ex)
{
System.err.println("sql_data.executeUpdate:" + ex.getMessage());
}
}
public ResultSet executeQuery(String sql) //其他数据库操作
{
rs = null;
try
{
conn = DriverManager.getConnection(sConnStr);
Statement stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
}
catch(SQLException ex)
{
System.err.println("sqldb.executeQuery:" + ex.getMessage());
}
return rs;
}
}
Top
2 楼caiyi0903(willpower)回复于 2004-05-01 21:27:54 得分 0
用JB设置断点debug一下看哪里参数传过去为NULL不就知道了?Top
3 楼sptbo(竹蜻蜓)回复于 2004-05-01 21:35:51 得分 0
rs = sqldata.executeQuery("SELECT * FROM StTable");//错误行
这个是空的.错误行.Top
4 楼lovechineseboy(蓝太阳)回复于 2004-05-01 21:44:49 得分 0
检查以下你是否连上数据库没有Top
5 楼sptbo(竹蜻蜓)回复于 2004-05-01 21:52:04 得分 0
怎么检查???把代码都写到一个文件里没问题的,可以正常显示数据库里的东西.Top
6 楼qingzhuang(半片云)回复于 2004-05-02 00:49:23 得分 0
支持,我经常遇到这样的问题,很烦恼Top
7 楼vongood((my c++))回复于 2004-05-02 01:33:29 得分 0
upTop
8 楼sptbo(竹蜻蜓)回复于 2004-05-02 11:44:07 得分 0
大侠们帮忙啊!!!Top
9 楼xiangbo520(充栋汗牛)回复于 2004-05-02 12:01:51 得分 0
sun.jdbc.odbc.JdbcOdbcDriver这个驱动程序不支持多个连接,你的第一个类里面怎么还有多线程啊!Top
10 楼peigen(比碗浅)回复于 2004-05-02 12:50:48 得分 0
没看到forname阿
Top
11 楼sptbo(竹蜻蜓)回复于 2004-05-02 13:11:12 得分 0
有fornameTop
12 楼sptbo(竹蜻蜓)回复于 2004-05-02 13:13:48 得分 0
我用了多线程,但只有一个线程和数据库连接,别的没有连接.Top
13 楼fuzuyuan(happyboy)回复于 2004-05-02 13:35:49 得分 100
你的sql_date sqldata;就是这样定义的吗?
你没有对它实例化吧,这样当然是一个空指针了!
应该这样
sql_date sqldata=new sql_date();Top
14 楼sptbo(竹蜻蜓)回复于 2004-05-02 13:45:06 得分 0
OK!问题解决!谢谢!!!给分了 !哈哈!!Top
15 楼sptbo(竹蜻蜓)回复于 2004-05-02 13:47:17 得分 0
能不能再顺便说一下,引起所无的原因?内存中怎么样的???Top




