下面这段代码:
/**
* 返回表中最大的编号
* @param String TableName,ArrayList ColumnList
* @return String
*/
public String dat_maxID(String TableName,String col) throws SQLException{
// DataBase db=new DataBase(); //建立连接
String sql= "SELECT MAX( "+col+" ) AS Expr1 FROM "+TableName;
ResultSet rs=this.dat_GetResult(sql);
boolean moreData=rs.next(); //指向结果集首部
System.out.println(moreData);
boolean test=rs.wasNull() ;
System.out.println("test***********:"+test);
if(rs.wasNull()){
System.out.println("*****************test");
return "00000000";
}
String maxNo=rs.getString(1);
return maxNo;
}
运行后:
SELECT MAX( proID ) AS Expr1 FROM project
true
test***********:false
null
Exception in thread "main" java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Integer.java:415)
at java.lang.Integer.parseInt(Integer.java:497)
at project.project.setst_ID(project.java:93)
at project.pro_main.main(pro_main.java:15)
而实际上,这个表中是没有数据的。根据ResultSet中的这个方法:
public boolean wasNull()
throws SQLException
Reports whether the last column read had a value of SQL NULL. Note that you must first call one of the getter methods on a column to try to read its value and then call the method wasNull to see if the value read was SQL NULL.
Returns:
true if the last column value read was SQL NULL and false otherwise
Throws:
SQLException - if a database access error occurs
应该在
” true
test***********:false”地方显输出
“false
test***********:true“
请帮查看为什么会没有输出预期的值?
另:如果在表中加入了数据,则这个方法是好用的。
代码修改后:
/**
* 返回表中最大的编号
* @param String TableName,ArrayList ColumnList
* @return String
*/
public String dat_maxID(String TableName,String col) throws SQLException{
// DataBase db=new DataBase(); //建立连接
String sql1="select "+col+" from "+TableName+";";
String sql2= "select max("+col+")from "+TableName+";";
ResultSet rs=this.dat_GetResult(sql1);
boolean moreData=rs.next(); //指向结果集首部
System.out.println("test*********"+moreData);
boolean test=rs.wasNull() ;
System.out.println("test***********:"+test);
if(!rs.next() ){
System.out.println("*****************test");
return "00000000";
}
rs=this.dat_GetResult(sql2);
moreData=rs.next(); //指向结果集首部
System.out.println("test*********"+moreData);
test=rs.wasNull() ;
System.out.println("test***********:"+test);
String maxNo=rs.getString(1);
System.out.println("test***********8maxNo is "+maxNo);
return maxNo;
}//成功
进行了优化后的代码:
/**
* 返回表中最大的编号
* @param TableName
* @param col
* @return String
* @throws SQLException
*/
public String dat_maxIDString(String TableName,String col) throws SQLException {
String maxNo=null;
String sql= "SELECT MAX( "+col+" ) AS Expr1 FROM "+TableName;
ResultSet rs=this.dat_GetResult(sql);
rs.next(); //指向结果集首部
if(rs.getString(1)==null){
return "00000000";
}
maxNo=rs.getString(1);
return maxNo;
}