jdbc 操作数据库 出现空指针

nice_fly 2017-04-06 06:56:21

错误显示
Exception in thread "main" java.lang.NullPointerException
at java.util.Properties$LineReader.readLine(Properties.java:418)
at java.util.Properties.load0(Properties.java:337)
at java.util.Properties.load(Properties.java:325)
at cn.pb.news.util.ConfigManager.<init>(ConfigManager.java:19)
at cn.pb.news.util.ConfigManager.getInstance(ConfigManager.java:30)
at edu.njcc.rj1514.dao.NewsDao.add(NewsDao.java:72)
at edu.njcc.rj1514.dao.NewsDao.main(NewsDao.java:118)


怎么解决呀 下面的 是我的代码

package edu.njcc.rj1514.dao;

import java.sql.Connection;
import java.util.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;

// import com.mysql.jdbc.PreparedStatement;

import cn.pb.news.util.ConfigManager;

public class NewsDao {

//查询新闻明细表
public void getNewsList(){

Connection connection = null;
Statement st = null;
ResultSet rs =null;
//从工具类里面得到我配置文件里的值
String driver = ConfigManager.getInstance().getString("jdbc.driver.class");
String url = ConfigManager.getInstance().getString("jdbc.connection.url");
String username = ConfigManager.getInstance().getString("jdbc.connection.username");
String password = ConfigManager.getInstance().getString("jdbc.connection.password");
try {
// 1、加载驱动
Class.forName(driver);
//2、获取数据库连接
connection = DriverManager.getConnection(url, username, password);
//3、获取Statement对象
String sql = "SELECT * FROM `news`.`news_detail`";
st = connection.createStatement();
rs = st.executeQuery(sql);
//4、处理sql执行结果
while (rs.next()) {
int id = rs.getInt("id");
int cate = rs.getInt("categoryId");
String title = rs.getString("title");
String summary = rs.getString("summary");
String content = rs.getString("content");
System.out.println("id:" + id + "\t" +"categoryId:" + cate +"\t" +"title:" +title +"\t"+"summary" +summary );
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//5、关闭资源
try {
rs.close();
st.close();
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

//增加新闻信息
public void add(int id,int categoryId,String title,String summary,String author,Date createDate){
Connection connection = null;
// Statement st = null;
PreparedStatement pst = null;
//从工具类里面得到我配置文件里的值
String driver = ConfigManager.getInstance().getString("jdbc.driver_class");
String url = ConfigManager.getInstance().getString("jdbc.connection.url");
String username = ConfigManager.getInstance().getString("jdbc.connection.username");
String password = ConfigManager.getInstance().getString("jdbc.connection.password");


try {
//1加载驱动
Class.forName(driver);
//2获取数据库连接
connection = DriverManager.getConnection(url, username, password);
//3获取statement对象,执行sql
// String sql = "insert into news_detail(id,categoryId,title,summary,author,createdate) values('"+id+"','"+categoryId+"','"+title+"','"+summary+"','"+new Timestamp(createDate.getTime())+"')";
// st = connection.createStatement();

String sql = "insert into news_detail(id,categoryId,title,summary,createdate) values(?,?,?,?,?)";
pst = connection.prepareStatement(sql);
pst.setInt(1, id);
pst.setInt(2, categoryId);
pst.setString(3, title);
pst.setString(4, summary);
pst.setTimestamp(5,new Timestamp(createDate.getTime()) );

//处理执行结果
// int i = st.executeUpdate(sql);
int i = pst.executeUpdate();
if (i>0) {
System.out.println("插入成功");
}


} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
pst.close();
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void main(String[] args){
NewsDao newsDao = new NewsDao();
newsDao.add(16, 11, "增加测试", "摘要", "admin", new Date());

newsDao.getNewsList();
}
}




...全文
584 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jio可 2017-04-07
  • 打赏
  • 举报
回复
configManager 19行初始化报错了
jio可 2017-04-07
  • 打赏
  • 举报
回复
看下配置信息的文件流读取到了没有
nice_fly 2017-04-07
  • 打赏
  • 举报
回复
这就是ConfigManager怎么改
package cn.pb.news.util;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

//读取配置文件的工具类-单例模式
public class ConfigManager {
	//读取配置文件properties.load(inputstream)
	
	private static ConfigManager configManager;
	private static Properties properties;
	
	private ConfigManager(){
		String configFile = "databse.properties";
		 properties = new Properties();
		 InputStream is = ConfigManager.class.getResourceAsStream(configFile);
		 try {
			properties.load(is);
			is.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	//提供一个入口
	public static ConfigManager getInstance(){
		if (configManager == null) {
			configManager = new ConfigManager();
		}
		
		return configManager;
	}
	//取值
	
	public String getString(String key){
		return properties.getProperty(key);
		
	}
	
	
	
}

10,606

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 其他
社区管理员
  • 其他
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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