急急急!!! 用java程序与连接数据库时报SQLException异常

像海一样的人 2012-11-26 01:05:44
这是一个简单的用java的程序连接oracle数据库的小程序,为了以后的方便维护,我把一些连接数据库的参数放到了一个.properties的配置文件中,下面我写了三个类,一个是专门管理从.properties文件拿出配置文件的东西,另一类是专门管理与数据库连接的,最后一个只是一个测试类,该测试类中有一个方法,即是把数据库中的每个数据都拿出来(用select语句,我没有吧里面的东西全部拿出来,只是拿出每一行的ID号)
问题:标题已经说的很清楚了(各位师兄师姐,拜托了啊)
取配置文件类
public class PropertiesUtil {

public static String getValueById(String key){
// String rootPath = System.getProperty("user.dir");
// int end = rootPath.lastIndexOf("//");
//
// rootPath = rootPath.substring(0, end);
// String path = rootPath+"/webapps/BBS/etc/datesource.properties";
// path = path.replace("//", "/");
String path="E:/workplace/myeclipseproject/BBS/WebRoot/etc/dataresources.properties";
String value=null;
Properties pro=new Properties();
try {
pro.load(new FileInputStream(path));
value=(String)pro.get(key);
return value;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return value;
}
}
----数据库连接类
package util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DBConnectionUtil {

private static DBConnectionUtil instance;

public DBConnectionUtil(){}

public static DBConnectionUtil getInstance(){

if(instance==null){
instance=new DBConnectionUtil();
}

return instance;
}

public Connection getConnection(){
Connection conn=null;
try {
String str=PropertiesUtil.getValueById("drivername");
Class.forName(str);
这三句话 ------ System.out.println(PropertiesUtil.getValueById("url"));
我是来验 ------ System.out.println(PropertiesUtil.getValueById("username"));
正,url ---- System.out.println(PropertiesUtil.getValueById("password"));
usernam conn=DriverManager.getConnection(PropertiesUtil.getValueById
密码是否正确的,结果打印出来的是正确的

("url"), PropertiesUtil.getValueById("username"), PropertiesUtil.getValueById("password")); --------每次执行这句话之后,跳到@@@@
} catch (ClassNotFoundException e) {
System.out.println("么有找到驱动。。");
} catch (SQLException e) {
System.out.println("连接失败");---@@@@
}
return conn;
}

public void closeConnection(ResultSet rs, PreparedStatement ps,
Connection conn) {
try {
if (rs != null) {
rs.close();
rs = null;
}
if (ps != null) {
ps.close();
ps = null;
}
if (conn != null) {
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}



}
-----测试类
public class TextDBConnection {

public static void getAll(){
//List<UserInfoDTO> list=new ArrayList<UserInfoDTO>();
DBConnectionUtil util=DBConnectionUtil.getInstance();
Connection conn=util.getConnection();
String sql="select * from user_info";
PreparedStatement ps=null;
ResultSet rs=null;
try {
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next()){
System.out.println("id="+rs.getInt("user_id"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
util.closeConnection(rs, ps, conn);
}




}
----main方法
public static void main(String[] args) {
getAll();
}

}
...全文
880 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
BoJerry 2012-11-26
  • 打赏
  • 举报
回复
是常见的空指针异常,在util包下的TextDBConnection类中的getAll()方法里面有个一值为null的对象。
像海一样的人 2012-11-26
  • 打赏
  • 举报
回复
为了看清楚错我截了错图
像海一样的人 2012-11-26
  • 打赏
  • 举报
回复
fangmingshijie那位师兄username 是登陆的用户名 是用来注释说明那三个打印语句 数据库驱动我导入了 顺便说一下:我用的ojdbc14.jar驱动 下面是连接数据库的连接的源代码即是我上面发的贴的DBConnectionUtil类 ====希望各位师兄师姐帮我把这个错找出来啊 package util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class DBConnectionUtil { private static DBConnectionUtil instance; public DBConnectionUtil(){} public static DBConnectionUtil getInstance(){ if(instance==null){ instance=new DBConnectionUtil(); } return instance; } public Connection getConnection(){ Connection conn=null; try { String str=PropertiesUtil.getValueById("drivername"); Class.forName(str); System.out.println(PropertiesUtil.getValueById("url")); System.out.println(PropertiesUtil.getValueById("username")); System.out.println(PropertiesUtil.getValueById("password")); conn=DriverManager.getConnection(PropertiesUtil.getValueById("url"), PropertiesUtil.getValueById("username"), PropertiesUtil.getValueById("password")); } catch (ClassNotFoundException e) { System.out.println("么有找到驱动。。"); } catch (SQLException e) { System.out.println("连接失败"); } return conn; } public void closeConnection(ResultSet rs, PreparedStatement ps, Connection conn) { try { if (rs != null) { rs.close(); rs = null; } if (ps != null) { ps.close(); ps = null; } if (conn != null) { conn.close(); conn = null; } } catch (SQLException e) { e.printStackTrace(); } } } 具体的错误信息为: oracle:jdbc:thin:@localhost:1521:orcl-----URL Exception in thread "main" java.lang.NullPointerException at util.TextDBConnection.getAll(TextDBConnection.java:22) at util.TextDBConnection.main(TextDBConnection.java:40) scott -----用户名 tiger------用户密码 连接失败
比特灵 2012-11-26
  • 打赏
  • 举报
回复
drivername=? 貌似缺少:class12.jar
  • 打赏
  • 举报
回复
usernam conn=DriverManager.getConnection(PropertiesUtil.getValueById("url"), PropertiesUtil.getValueById("username"), PropertiesUtil.getValueById("password")); usernam是什么类型?能直接接受conn?
snow-is-my-Love 2012-11-26
  • 打赏
  • 举报
回复
请把错误贴出来
Jordan37 2012-11-26
  • 打赏
  • 举报
回复
可能是你的数据库的监听还有服务没有开启!
像海一样的人 2012-11-26
  • 打赏
  • 举报
回复
首先真的谢谢各位师兄师姐,谢谢你们能这么认真处理我的问题,其次,我这个问题,就程序来说是没有问题了因为刚才用mysql进行数据库连接时,没有问题,没有报错而且顺利取出每个值,而为什么用oracle进行连接时有错误,我非常想请教一下给位师兄师姐,你们以前遇到这个问题吗(用oracle数据库不行,而用其他的数据库可以)如果遇到了,那么又是这么解决的呢,很想知道这个答案啊 我用的开发环境:Myeclipse JDBC驱动是oracle14.jar 、oracle 11g数据库 等待回答
MIT的梦 2012-11-26
  • 打赏
  • 举报
回复
DBConnectionUtil util=DBConnectionUtil.getInstance();
Connection conn=util.getConnection();
这里有问题吧
Jordan37 2012-11-26
  • 打赏
  • 举报
回复
lz,恭喜你,你的程序没有问题! 首先,确认你引入驱动的方法正确;其次,你看看数据库的服务启动了吗 我运行过你的程序,没有问题,有什么问题再问!
像海一样的人 2012-11-26
  • 打赏
  • 举报
回复
我刚才调试了一下,是Connection conn为空值即是上面程序的 conn=DriverManager.getConnection(PropertiesUtil.getValueById("url"), PropertiesUtil.getValueById("username"), PropertiesUtil.getValueById("password")); 为空,但是我有点想不通为什么为空,因为我用myeclipse的DB Browser窗口进行测试连接时,提示连接成功 (相同的JDBC驱动)为啥用程序连接,就连不上

62,615

社区成员

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

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