网上找一个图书馆管理系统来学习,简单改了下前端,配置到本地所有功能都没问题,本地环境:win10+jdk1.7+mysql5.1.49+tomcat7.0.63.
服务器环境:CentOS6.5+jdk1.8+mysql5.1.73+tomcat7.0.39.数据库表结构:网页一旦涉及到访问其中的tb_reader和tb_readertype就报空指针异常,其他功能都没问题:ReaderDAO代码如下:
package com.dao;import com.core.ConnDB;
import java.util.*;
import java.sql.*;
import com.actionForm.ReaderForm;public class ReaderDAO {
private ConnDB conn=new ConnDB();
//查询数据
public Collection query(String strif){
ReaderForm readerForm=null;
Collection readerColl=new ArrayList();
String sql="";
if(strif!="all" && strif!=null && strif!=""){
sql="select r.*,t.name as typename,t.number from tb_reader r left join tb_readerType t on r.typeid=t.id where "+strif+"";
}else{
sql="select r.*,t.name as typename,t.number from tb_reader r left join tb_readerType t on r.typeid=t.id";
}
ResultSet rs=conn.executeQuery(sql);
try {
while (rs.next()) {
readerForm=new ReaderForm();
readerForm.setId(Integer.valueOf(rs.getString(1)));
readerForm.setName(rs.getString(2));
readerForm.setSex(rs.getString(3));
readerForm.setBarcode(rs.getString(4));
readerForm.setVocation(rs.getString(5));
readerForm.setBirthday(rs.getString(6));
readerForm.setPaperType(rs.getString(7));
readerForm.setPaperNO(rs.getString(8));
readerForm.setTel(rs.getString(9));
readerForm.setEmail(rs.getString(10));
readerForm.setCreateDate(rs.getString(11));
readerForm.setOperator(rs.getString(12));
readerForm.setRe(rs.getString(13));
readerForm.setTypeid(rs.getInt(14));
readerForm.setTypename(rs.getString(15));
readerForm.setNumber(rs.getInt(16));
readerColl.add(readerForm);
}
} catch (SQLException ex) {
}
conn.close();
return readerColl;
}
//用于修改的查询
public ReaderForm queryM(ReaderForm readerForm){
ReaderForm readerForm1=null;
String sql="";
if(readerForm.getId()!=null){
sql="select r.*,t.name as typename,t.number from tb_reader r left join tb_readerType t on r.typeid=t.id where r.id="+readerForm.getId()+"";
}else if(readerForm.getBarcode()!=null){
sql="select r.*,t.name as typename,t.number from tb_reader r left join tb_readerType t on r.typeid=t.id where r.barcode="+readerForm.getBarcode()+"";
}
System.out.println("修改读者信息时的SQL:"+sql);
ResultSet rs=conn.executeQuery(sql);
try {
while (rs.next()) {
readerForm1=new ReaderForm();
readerForm1.setId(Integer.valueOf(rs.getString(1)));
readerForm1.setName(rs.getString(2));
readerForm1.setSex(rs.getString(3));
readerForm1.setBarcode(rs.getString(4));
readerForm1.setVocation(rs.getString(5));
readerForm1.setBirthday(rs.getString(6));
readerForm1.setPaperType(rs.getString(7));
readerForm1.setPaperNO(rs.getString(8));
readerForm1.setTel(rs.getString(9));
readerForm1.setEmail(rs.getString(10));
readerForm1.setCreateDate(rs.getString(11));
readerForm1.setOperator(rs.getString(12));
readerForm1.setRe(rs.getString(13));
readerForm1.setTypeid(rs.getInt(14));
readerForm1.setTypename(rs.getString(15));
readerForm1.setNumber(rs.getInt(16));
System.out.println(rs.getString(2));
}
} catch (SQLException ex) {
}
conn.close();
return readerForm1;
}
//添加数据
public int insert(ReaderForm readerForm){
String sql1="SELECT * FROM tb_reader WHERE barcode='"+readerForm.getBarcode()+"'";
ResultSet rs = conn.executeQuery(sql1);
String sql = "";
int falg = 0;
try {
if (rs.next()) {
falg = 2;
} else {
sql ="Insert into tb_reader (name,sex,barcode,vocation,birthday,paperType,paperNO,tel,email,createDate,operator,re,typeid) values('"+readerForm.getName()+"','"+readerForm.getSex()+"','"+readerForm.getBarcode()+"','"+readerForm.getVocation()+"','"+readerForm.getBirthday()+"','"+readerForm.getPaperType()+"','"+readerForm.getPaperNO()+"','"+readerForm.getTel()+"','"+readerForm.getEmail()+"','"+readerForm.getCreateDate()+"','"+readerForm.getOperator()+"','"+readerForm.getRe()+"',"+readerForm.getTypeid()+")";
falg = conn.executeUpdate(sql);
System.out.println("添加读者信息的SQL:" + sql);
conn.close();
}
} catch (SQLException ex) {
falg = 0;
}
System.out.println("falg:"+falg);
return falg;
}//修改数据
public int update(ReaderForm readerForm){
String sql="Update tb_reader set sex='"+readerForm.getSex()+"',barcode='"+readerForm.getBarcode()+"',vocation='"+readerForm.getVocation()+"',birthday='"+readerForm.getBirthday()+"',paperType='"+readerForm.getPaperType()+"',paperNO='"+readerForm.getPaperNO()+"',tel='"+readerForm.getTel()+"',email='"+readerForm.getEmail()+"',re='"+readerForm.getRe()+"',typeid="+readerForm.getTypeid()+" where id="+readerForm.getId()+"";
int falg=conn.executeUpdate(sql);
System.out.println("修改数据时的SQL:"+sql);
conn.close();
return falg;
}
//删除数据
public int delete(ReaderForm readerForm){
String sql="Delete from tb_reader where id="+readerForm.getId()+"";
int falg=conn.executeUpdate(sql);
System.out.println("删除时的SQL:"+sql);
return falg;
}
}
项目框架:数据库能够正常读取表:服务器地址:http://hustsuoffice.cn
超级管理员
账户:tsoft
密码:111
读者管理两个功能报错,图书类型管理功能报错,图书借阅查询读者信息报错,都是空指针异常,与那两个表有关的数据好像都读取不出来,其他表都可以,感觉不是数据库链接的问题,但是又读不到数据。求大神帮忙。
服务器环境:CentOS6.5+jdk1.8+mysql5.1.73+tomcat7.0.39.数据库表结构:网页一旦涉及到访问其中的tb_reader和tb_readertype就报空指针异常,其他功能都没问题:ReaderDAO代码如下:
package com.dao;import com.core.ConnDB;
import java.util.*;
import java.sql.*;
import com.actionForm.ReaderForm;public class ReaderDAO {
private ConnDB conn=new ConnDB();
//查询数据
public Collection query(String strif){
ReaderForm readerForm=null;
Collection readerColl=new ArrayList();
String sql="";
if(strif!="all" && strif!=null && strif!=""){
sql="select r.*,t.name as typename,t.number from tb_reader r left join tb_readerType t on r.typeid=t.id where "+strif+"";
}else{
sql="select r.*,t.name as typename,t.number from tb_reader r left join tb_readerType t on r.typeid=t.id";
}
ResultSet rs=conn.executeQuery(sql);
try {
while (rs.next()) {
readerForm=new ReaderForm();
readerForm.setId(Integer.valueOf(rs.getString(1)));
readerForm.setName(rs.getString(2));
readerForm.setSex(rs.getString(3));
readerForm.setBarcode(rs.getString(4));
readerForm.setVocation(rs.getString(5));
readerForm.setBirthday(rs.getString(6));
readerForm.setPaperType(rs.getString(7));
readerForm.setPaperNO(rs.getString(8));
readerForm.setTel(rs.getString(9));
readerForm.setEmail(rs.getString(10));
readerForm.setCreateDate(rs.getString(11));
readerForm.setOperator(rs.getString(12));
readerForm.setRe(rs.getString(13));
readerForm.setTypeid(rs.getInt(14));
readerForm.setTypename(rs.getString(15));
readerForm.setNumber(rs.getInt(16));
readerColl.add(readerForm);
}
} catch (SQLException ex) {
}
conn.close();
return readerColl;
}
//用于修改的查询
public ReaderForm queryM(ReaderForm readerForm){
ReaderForm readerForm1=null;
String sql="";
if(readerForm.getId()!=null){
sql="select r.*,t.name as typename,t.number from tb_reader r left join tb_readerType t on r.typeid=t.id where r.id="+readerForm.getId()+"";
}else if(readerForm.getBarcode()!=null){
sql="select r.*,t.name as typename,t.number from tb_reader r left join tb_readerType t on r.typeid=t.id where r.barcode="+readerForm.getBarcode()+"";
}
System.out.println("修改读者信息时的SQL:"+sql);
ResultSet rs=conn.executeQuery(sql);
try {
while (rs.next()) {
readerForm1=new ReaderForm();
readerForm1.setId(Integer.valueOf(rs.getString(1)));
readerForm1.setName(rs.getString(2));
readerForm1.setSex(rs.getString(3));
readerForm1.setBarcode(rs.getString(4));
readerForm1.setVocation(rs.getString(5));
readerForm1.setBirthday(rs.getString(6));
readerForm1.setPaperType(rs.getString(7));
readerForm1.setPaperNO(rs.getString(8));
readerForm1.setTel(rs.getString(9));
readerForm1.setEmail(rs.getString(10));
readerForm1.setCreateDate(rs.getString(11));
readerForm1.setOperator(rs.getString(12));
readerForm1.setRe(rs.getString(13));
readerForm1.setTypeid(rs.getInt(14));
readerForm1.setTypename(rs.getString(15));
readerForm1.setNumber(rs.getInt(16));
System.out.println(rs.getString(2));
}
} catch (SQLException ex) {
}
conn.close();
return readerForm1;
}
//添加数据
public int insert(ReaderForm readerForm){
String sql1="SELECT * FROM tb_reader WHERE barcode='"+readerForm.getBarcode()+"'";
ResultSet rs = conn.executeQuery(sql1);
String sql = "";
int falg = 0;
try {
if (rs.next()) {
falg = 2;
} else {
sql ="Insert into tb_reader (name,sex,barcode,vocation,birthday,paperType,paperNO,tel,email,createDate,operator,re,typeid) values('"+readerForm.getName()+"','"+readerForm.getSex()+"','"+readerForm.getBarcode()+"','"+readerForm.getVocation()+"','"+readerForm.getBirthday()+"','"+readerForm.getPaperType()+"','"+readerForm.getPaperNO()+"','"+readerForm.getTel()+"','"+readerForm.getEmail()+"','"+readerForm.getCreateDate()+"','"+readerForm.getOperator()+"','"+readerForm.getRe()+"',"+readerForm.getTypeid()+")";
falg = conn.executeUpdate(sql);
System.out.println("添加读者信息的SQL:" + sql);
conn.close();
}
} catch (SQLException ex) {
falg = 0;
}
System.out.println("falg:"+falg);
return falg;
}//修改数据
public int update(ReaderForm readerForm){
String sql="Update tb_reader set sex='"+readerForm.getSex()+"',barcode='"+readerForm.getBarcode()+"',vocation='"+readerForm.getVocation()+"',birthday='"+readerForm.getBirthday()+"',paperType='"+readerForm.getPaperType()+"',paperNO='"+readerForm.getPaperNO()+"',tel='"+readerForm.getTel()+"',email='"+readerForm.getEmail()+"',re='"+readerForm.getRe()+"',typeid="+readerForm.getTypeid()+" where id="+readerForm.getId()+"";
int falg=conn.executeUpdate(sql);
System.out.println("修改数据时的SQL:"+sql);
conn.close();
return falg;
}
//删除数据
public int delete(ReaderForm readerForm){
String sql="Delete from tb_reader where id="+readerForm.getId()+"";
int falg=conn.executeUpdate(sql);
System.out.println("删除时的SQL:"+sql);
return falg;
}
}
项目框架:数据库能够正常读取表:服务器地址:http://hustsuoffice.cn
超级管理员
账户:tsoft
密码:111
读者管理两个功能报错,图书类型管理功能报错,图书借阅查询读者信息报错,都是空指针异常,与那两个表有关的数据好像都读取不出来,其他表都可以,感觉不是数据库链接的问题,但是又读不到数据。求大神帮忙。
你这应该sql这个变量是空的语言,会断点么...估计两个if都没进
sql不是这么拼的
ResultSet rs=conn.executeQuery(sql);
try {
while (rs.next()) {如果sql没有问题,要么conn为空,要么查询的结果集rs为空。
你可以把sql语句打印出来,然后直接用数据库管理工具执行下sql语句看看有没有问题。