IT人
相关图书

为什么会出现空异常呢,解决就给分,有源码,初学小问题

所属分类:Java J2EE / EJB / JMS
-----------------------------------------

LearcnDaoImpl类的源码是:package org.wdj.learcn.daoimpl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import org.wdj.learcn.dao.LearcnDao;
import org.wdj.learcn.db.DbConnection;
import org.wdj.learcn.vo.Article;

public class LearcnDaoImpl implements LearcnDao {
private Connection con = null;

private PreparedStatement ps = null;

private ResultSet rs = null;

public LearcnDaoImpl() {
con = DbConnection.getConnection();
}

public ArrayList getArticle(String type) {
// 实现接口--获取文章

ArrayList<Article> array = new ArrayList<Article>();
Article article = null;
System.out.println(con);
try {
ps = con.prepareStatement("select * from article where type=?");
ps.setString(1, type);
rs = ps.executeQuery();
while (rs.next()) {
article = new Article();
article.setId(rs.getInt("id"));
System.out.println(article.getId());
article.setType(rs.getString("type"));

String name=rs.getString("name");
if(name.length()>16){
name=name.substring(0,16)+"...";
}
article.setName(name);
article.setFilename(rs.getString("filename"));
article.setFilesize(rs.getString("filesize"));
article.setClick(rs.getString("click"));
article.setDowncount(rs.getString("downcount"));
article.setIntro(rs.getString("intro"));
article.setDownloadurl(rs.getString("downloadurl"));
article.setCodeurl(rs.getString("codeurl"));
article.setAddtime(rs.getString("addtime"));
 
array.add(article);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (rs != null) {
try {
rs.close();
rs = null;
} catch (SQLException e) {
e.printStackTrace();
}
}
if (ps != null) {
try {
ps.close();
ps = null;
} catch (SQLException e) {
e.printStackTrace();
}
}
if (con != null) {
try {
con.close();
con = null;
} catch (SQLException e) {
e.printStackTrace();
}
}

}

return array;
}
}


测试类的源码是:
public class Test {
public static void main(String[] args) {
LearcnDao learcn = LearcnFactory.getLearcnDaoImplInstance();
ArrayList article =learcn.getArticle("1");
ArrayList article2 =learcn.getArticle("2");
System.out.println(article.size());
for (int i = 0; i < article.size(); i++) {
System.out.println("a");
}

System.out.println(article2.size());
for (int i = 0; i < article2.size(); i++) {
System.out.println("a");
}

}
}

现在的问题是一运行就出现空异常,
如果在测试类里把
ArrayList article2 =learcn.getArticle("2");
和System.out.println(article2.size());
for (int i = 0; i < article2.size(); i++) {
System.out.println("a");
}
去掉就不出现异常,请问是哪里错了,该怎么写呢

----------------------------------------------------------------------

在数据库中查看你type为2的数据,看有没有name为null的

--------------------------------------------------------

if (con != null) {
try {
con.close();
con = null;
} catch (SQLException e) {
e.printStackTrace();
}
}
兄弟 是这句的问题 你在第一次ArrayList article =learcn.getArticle("1"); 后把conn设为空了啊  所以为出现空异常  把这些去掉 专门放在一个方法中就行了

相关问题
    Copyright ◎ 1998 - 2007 编程资料网 All Rights Reserved