当前位置: 技术问答>java相关
为什么在Win98下好好的,Linux上就报空指针错误啊?(附代码)
来源: 互联网 发布时间:2017-04-14
本文导语: 在DBTrans.java中 public ResultSet executeQuery(String sql) throws SQLException { ResultSet rs = null; try { stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); rs = stmt.executeQuery(sql); ...
在DBTrans.java中
public ResultSet executeQuery(String sql) throws SQLException
{ ResultSet rs = null;
try { stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery(sql);
stmt.close();}
catch (SQLException ex) { ex.printStackTrace();
System.out.println("dbTrans.executeQuery:"+ex.getMessage());
throw ex; }
return rs;
}
在Install.java中
public String HadInst()
{ String SQL="select version from config";
try
{ rs = DBSQL.executeQuery(SQL);
if (rs.next()) InstVer = rs.getString("version");
}
catch (SQLException e) { System.err.println("Get HadInstall Err!"); }
return InstVer;
}
在install.jsp中有
Install.HadInst(); //这样就会报空指针错误
//因为我的数据库里没有config这个表;如果通过程序来判断,怎么能判断出库里是否有config表呢?
//谢谢各位大虾了先~~~~^_^
public ResultSet executeQuery(String sql) throws SQLException
{ ResultSet rs = null;
try { stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery(sql);
stmt.close();}
catch (SQLException ex) { ex.printStackTrace();
System.out.println("dbTrans.executeQuery:"+ex.getMessage());
throw ex; }
return rs;
}
在Install.java中
public String HadInst()
{ String SQL="select version from config";
try
{ rs = DBSQL.executeQuery(SQL);
if (rs.next()) InstVer = rs.getString("version");
}
catch (SQLException e) { System.err.println("Get HadInstall Err!"); }
return InstVer;
}
在install.jsp中有
Install.HadInst(); //这样就会报空指针错误
//因为我的数据库里没有config这个表;如果通过程序来判断,怎么能判断出库里是否有config表呢?
//谢谢各位大虾了先~~~~^_^
|
try
{ rs = DBSQL.executeQuery(SQL);
if (rs.next()) InstVer = rs.getString("version");
}
catch (SQLException e) { System.err.println("Get HadInstall Err!"); }
//你能保证你这里catch了 “表不存在”时的异常了吗?
catch(Exception e) :) 这样肯定ok!
可以判断是否有某个表,这和具体数据库有关,一般是通过某个系统表查找。
//确实这样啊,不过这个和你用的数据库相关了 :) 查数据库系统表把~
//btw: 我没看到你的install.java里面已经初始化了阿~ :)
{ rs = DBSQL.executeQuery(SQL);
if (rs.next()) InstVer = rs.getString("version");
}
catch (SQLException e) { System.err.println("Get HadInstall Err!"); }
//你能保证你这里catch了 “表不存在”时的异常了吗?
catch(Exception e) :) 这样肯定ok!
可以判断是否有某个表,这和具体数据库有关,一般是通过某个系统表查找。
//确实这样啊,不过这个和你用的数据库相关了 :) 查数据库系统表把~
//btw: 我没看到你的install.java里面已经初始化了阿~ :)
|
你就用:
String a= “”;
try {
我来找这个表
a= “表存在” ;
}
catch (Exception ex) {
a = "表不存在" ;
}
return a;
String a= “”;
try {
我来找这个表
a= “表存在” ;
}
catch (Exception ex) {
a = "表不存在" ;
}
return a;
|
你用的什么数据库?
你可以查询系统表,得到一个系统视图,在视图里面看你的table是否存在
另外,最起码你可以这样:
public String HadInst()
{ String SQL="select version from config";
InstVer=new String("No config Table");
try
{ rs = DBSQL.executeQuery(SQL);
if (rs.next()) InstVer = rs.getString("version");
}
catch (SQLException e) { System.err.println("Get HadInstall Err!"); }
return InstVer;
}
报错的原因也仅仅在于你的InstVer没有能够初始化,你可能后面用了一个空引用。
你可以查询系统表,得到一个系统视图,在视图里面看你的table是否存在
另外,最起码你可以这样:
public String HadInst()
{ String SQL="select version from config";
InstVer=new String("No config Table");
try
{ rs = DBSQL.executeQuery(SQL);
if (rs.next()) InstVer = rs.getString("version");
}
catch (SQLException e) { System.err.println("Get HadInstall Err!"); }
return InstVer;
}
报错的原因也仅仅在于你的InstVer没有能够初始化,你可能后面用了一个空引用。
|
:) 菜菜的说~~
问题到底在哪儿,只有代码全部出来才能知道, :) tomcat出来4.1.18了?
我还以为我是最新的呢~ 我除了MS的东西,其余的都捣鼓过~ 嘿嘿~ delphi,CPP,asp,jsp 呵~
中文的问题,我看你不是已经解决了?就是在头里面写入字符集!
问题到底在哪儿,只有代码全部出来才能知道, :) tomcat出来4.1.18了?
我还以为我是最新的呢~ 我除了MS的东西,其余的都捣鼓过~ 嘿嘿~ delphi,CPP,asp,jsp 呵~
中文的问题,我看你不是已经解决了?就是在头里面写入字符集!
|
up!