该怎么解决该问题

liuyonghailiuyong 2003-07-25 03:44:27
DBConn.java:


package lyh;

import java.sql.*;
import java.util.*;
/**
* <p>Title: 一个基本的数据库连接类</p>
* <p>Copyright: Copyright (c) 2003</p>
* @author 刘永海
* @version 1.0
*/

public class DBConn{
//建立数据库连接的缺省参数
String DBDriver="oracle.jdbc.driver.OracleDriver";
String DBLocation="jdbc:oracle:thin:@localhost:1521:infodb";
private Connection conn=null;
private String DBUser="lyh";
private String DBPwd="";
private ResultSet rs=null;


public DBConn(){
}
/**
*构造函数
*@param DBDriver JDBC驱动器
*@param DBLocation 数据源地址
*/

public DBConn(String DBDriver,String DBLocation){
this.DBDriver=DBDriver;
this.DBLocation=DBLocation;
}
/**
* 设置数据源地址
* @param DBLocation 数据源地址
*/
public void setDBLocation(String DBLocation){
this.DBLocation=DBLocation;
}
/**
* 设置jdbc驱动
* @param DBDriver JDBC驱动器
*/
public void setDBDriver(String DBDriver){
this.DBDriver=DBDriver;
}
/**
* 设置数据库登录用的用户名
* @param DBUser 数据库用户名
*/


public void setDBUser(String DBUser){
this.DBUser=DBUser;
}
/**
* 设置登录用的密码
* @param DBPwd 数据库密码
*/

public void setDBPwd(String DBPwd){
this.DBPwd=DBPwd;
}
/**
* 建立数据库连接
*/
public void connect(){
try{
Class.forName(DBDriver).newInstance();
conn=DriverManager.getConnection(DBLocation,DBUser,DBPwd);

}catch(ClassNotFoundException e){

}catch(SQLException e){
}
catch(Exception e){

}

}
/**
*得到数据库连接
*/
public Connection getConnection(){
//如果原先没有建立连接
//这里尝试建立连接
if(conn==null){
connect();
}
return conn;
}
}
**********************************************
DBQuery.java


package lyh;

import java.io.*;
import java.sql.*;

/**
* <p>Title:一个数据库查询的基本类</p>
* <p>Copyright: Copyright (c) 2003</p>
* @author 刘永海
* @version 1.0
*/

public class DBQuery {
//声明和设定缺省值
private ResultSet rs=null;
private Connection conn=null;
private DBConn dbconn=null;
private int concurType=ResultSet.CONCUR_READ_ONLY;
private int scrollType=ResultSet.TYPE_FORWARD_ONLY;

public DBQuery() {
}
/**
* 构造函数
* @param dbconn 一个可用的数据库连接
*/
public DBQuery(DBConn dbconn){
this.dbconn=dbconn;
}
/**
* 在内部建立数据库连接
*/
public void createConnection(){
if(conn==null){
if(dbconn==null){
dbconn=new DBConn();
dbconn.connect();
}
conn=dbconn.getConnection();
}
}
/**
* 执行查询
* @param strSql 需要执行的sql语言字符串
* @throws 出现内部sql错误时,抛出SQLException
*/
public ResultSet executeQuery(String strSql) throws SQLException{
if(strSql==null){
return null;
}
//如果没有可用连接,使着建立缺省连接
if(conn==null){
createConnection();
}
//如果仍然没有可用连接,返回null值
if(conn==null)
rs=null;
else{
Statement s=conn.createStatement(scrollType,concurType);
//执行查询
rs=s.executeQuery(strSql);
}

return(rs);
}
}
***************************************
TestDBConn.java

package lyh;

import java.sql.*;
public class TestDBCoon {
public TestDBCoon() {
}
public static void main(String[] args){
String DBDriver="oracle:jdbc:driver:OracleDriver";
String DBLocation="jdbc:oracle:thin:@localhost:1521:infodb";
String DBUser="lyh";
String DBPwd="lyh";
DBConn dbconn=new DBConn(DBDriver,DBLocation);
dbconn.setDBUser(DBUser);
dbconn.setDBPwd(DBPwd);
dbconn.connect();
String sql="select * from lyb";
ResultSet rs=null;
DBQuery dbQuery=new DBQuery(dbconn);
dbQuery.createConnection();
try{
rs=dbQuery.executeQuery(sql);
}catch(SQLException e){

}
try{
while(rs.next()){
System.out.println(rs.getString("title"));
System.out.println(rs.getString("author"));
System.out.println(rs.getString("content"));
}
}catch(SQLException e){

}
catch(NullPointerException e){

}

}
}
************************************
运行没有结果

数据库infodb
表名:lyb
字段:title,author,content,都是char型的
...全文
19 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuyonghailiuyong 2003-07-25
  • 打赏
  • 举报
回复
rs 执行完后还是空,怎么办
thinkerhj 2003-07-25
  • 打赏
  • 举报
回复
看看这一段执行完了 rs是否还是null
try{
rs=dbQuery.executeQuery(sql);
}catch(SQLException e){

}
ashes 2003-07-25
  • 打赏
  • 举报
回复
try{
rs=dbQuery.executeQuery(sql);
}catch(SQLException e){

}
这一段呢,把exception print出来看看
liuyonghailiuyong 2003-07-25
  • 打赏
  • 举报
回复
有数据
liuyonghailiuyong 2003-07-25
  • 打赏
  • 举报
回复
没有catch(NullPointerException e){e.printStackTrace();

}
出现NullPointerException 在

while(rs.next())这一行
moumouren 2003-07-25
  • 打赏
  • 举报
回复
表里有数据吗?
while(rs.next()){
System.out.println(rs.getString("title"));
System.out.println(rs.getString("author"));
System.out.println(rs.getString("content"));
}

--》

while(rs.next()){
System.out.println(“next”);
System.out.println(rs.getString(1));
System.out.println(rs.getString(2));
System.out.println(rs.getString(3));
}
javahui 2003-07-25
  • 打赏
  • 举报
回复
try{
while(rs.next()){
System.out.println(rs.getString("title"));
System.out.println(rs.getString("author"));
System.out.println(rs.getString("content"));
}
}catch(SQLException e){e.printStackTrace();

}
catch(NullPointerException e){e.printStackTrace();

}

要打印出错误信息,才能查原因。

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧