当前位置: 技术问答>java相关
为什麽jsp用jdbc odbc桥调用sql server中的数据就是调不出来呢? 怎样往里写数据?
来源: 互联网 发布时间:2015-07-23
本文导语: 我的sql server数据库已经建好了,odbc数据源也建好了,用别的程序调用已没问题了,可就是用这个程序不能调用数据库中的信息,只要我一打 while(rs.next()){ out.println(rs.getInt("id"));},类似只要出现"rs."它就说NullPointerExcep...
我的sql server数据库已经建好了,odbc数据源也建好了,用别的程序调用已没问题了,可就是用这个程序不能调用数据库中的信息,只要我一打 while(rs.next()){
out.println(rs.getInt("id"));},类似只要出现"rs."它就说NullPointerException!空的引用。可是这些语句句句是指向已建好的数据库的,javabean的位置绝没问题,而且sql server服务器是开着的!下面就是在main.jsp中调用数据库的语句,用jbuilder调试时说因为"while(rs.next())"这句,所以为NullPointerException,显然是rs有问题!!!
//////////////////////////////////////main.jsp///////////////////////////
... ...... ....... .......... ....... .... ........ ...........
.......... ....... .......... ......... ......... ...
我想尽一切方法改javabean,可都无济于事,如上次有几位高手所说的,应改成basicDB.executeUpdate(sql),可也无济于事,它还说不能从void型转化。如没有rs.getInt("id");还能显示出留言板的框架,只要一有这句,就又是NullPointerException!!!!!!!下面就是javabean的内容:
///////////////////////////////basicDBBean.java///////////////////////////
package riso.mybook.jsp.c7;
import java.sql.*;
/**
*
*
*
*
* @author unascribed
* @version 1.0
*/
/*一个简单的数据库连接类*/
public class basicDBBean {
private String DBLocation="jdbc:odbc:basiclyb";
private String DBDriver="sun.Jdbc.Odbc.JdbcOdbcDriver";
private ResultSet rs=null;
private Connection conn=null;
public basicDBBean() {
}
public ResultSet executeQuery(String sql){
if(conn==null){
DBConnect();
}
else{
try{
Statement s=conn.createStatement();
rs=s.executeQuery(sql);
}
catch(SQLException e){}
}
return (rs);
}
public String DBConnect()
{
String strExc="";
try{
Class.forName(DBDriver);
conn=DriverManager.getConnection(DBLocation,"riso","");
}
catch(ClassNotFoundException e){
strExc=e.toString();
}
catch(SQLException e){
strExc=e.toString();
}
return(strExc);
}
public void setDBLocation(String location){
DBLocation=location;
}
public void setDBDriver(String driver){
DBDriver=driver;
}
public void setconn(Connection conn){
conn=conn;
}
public String getDBLocation(){
return (DBLocation);
}
public String getDBDriver(){
return(DBDriver);
}
public ResultSet getRS(){
return(rs);
}
public Connection getconn(){
return(conn);
}
}
下在我的脑子里全是NullPointerException!有那位高手帮我解决一下吧!多谢!
out.println(rs.getInt("id"));},类似只要出现"rs."它就说NullPointerException!空的引用。可是这些语句句句是指向已建好的数据库的,javabean的位置绝没问题,而且sql server服务器是开着的!下面就是在main.jsp中调用数据库的语句,用jbuilder调试时说因为"while(rs.next())"这句,所以为NullPointerException,显然是rs有问题!!!
//////////////////////////////////////main.jsp///////////////////////////
... ...... ....... .......... ....... .... ........ ...........
.......... ....... .......... ......... ......... ...
我想尽一切方法改javabean,可都无济于事,如上次有几位高手所说的,应改成basicDB.executeUpdate(sql),可也无济于事,它还说不能从void型转化。如没有rs.getInt("id");还能显示出留言板的框架,只要一有这句,就又是NullPointerException!!!!!!!下面就是javabean的内容:
///////////////////////////////basicDBBean.java///////////////////////////
package riso.mybook.jsp.c7;
import java.sql.*;
/**
*
Title:
*
Description:
*
Copyright: Copyright (c) 2002
*
Company:
* @author unascribed
* @version 1.0
*/
/*一个简单的数据库连接类*/
public class basicDBBean {
private String DBLocation="jdbc:odbc:basiclyb";
private String DBDriver="sun.Jdbc.Odbc.JdbcOdbcDriver";
private ResultSet rs=null;
private Connection conn=null;
public basicDBBean() {
}
public ResultSet executeQuery(String sql){
if(conn==null){
DBConnect();
}
else{
try{
Statement s=conn.createStatement();
rs=s.executeQuery(sql);
}
catch(SQLException e){}
}
return (rs);
}
public String DBConnect()
{
String strExc="";
try{
Class.forName(DBDriver);
conn=DriverManager.getConnection(DBLocation,"riso","");
}
catch(ClassNotFoundException e){
strExc=e.toString();
}
catch(SQLException e){
strExc=e.toString();
}
return(strExc);
}
public void setDBLocation(String location){
DBLocation=location;
}
public void setDBDriver(String driver){
DBDriver=driver;
}
public void setconn(Connection conn){
conn=conn;
}
public String getDBLocation(){
return (DBLocation);
}
public String getDBDriver(){
return(DBDriver);
}
public ResultSet getRS(){
return(rs);
}
public Connection getconn(){
return(conn);
}
}
下在我的脑子里全是NullPointerException!有那位高手帮我解决一下吧!多谢!
|
说明rs=basicDB.executeQuery(sql);得到rs为空。
try:
将
public ResultSet executeQuery(String sql){
if(conn==null){
DBConnect();
}
else{
try{
Statement s=conn.createStatement();
rs=s.executeQuery(sql);
}
catch(SQLException e){}
}
return (rs);
}
改为:
public ResultSet executeQuery(String sql){
if(conn==null){
DBConnect();
}
try{
Statement s=conn.createStatement();
rs=s.executeQuery(sql);
}
catch(SQLException e){}
return (rs);
}
或:将jsp中的basicDB.DBConnect();方法去掉,两种方法选一种。
try:
将
public ResultSet executeQuery(String sql){
if(conn==null){
DBConnect();
}
else{
try{
Statement s=conn.createStatement();
rs=s.executeQuery(sql);
}
catch(SQLException e){}
}
return (rs);
}
改为:
public ResultSet executeQuery(String sql){
if(conn==null){
DBConnect();
}
try{
Statement s=conn.createStatement();
rs=s.executeQuery(sql);
}
catch(SQLException e){}
return (rs);
}
或:将jsp中的basicDB.DBConnect();方法去掉,两种方法选一种。
|
我觉得你的bean 有点点问题,只是说不上来哪里,好像executeQuery那里,
你想执行它就先执行if(conn==null)中的DBConnect(),呵呵,Andrawu(Andrawu) 说的。
你想执行它就先执行if(conn==null)中的DBConnect(),呵呵,Andrawu(Andrawu) 说的。