你的程序有问题,是数组越界了。
看看你的错误是在那。
比如:
List list = new ArrayList(2);
list.get(3); ///这里就出现了你上边的错误
看看你的错误是在那。
比如:
List list = new ArrayList(2);
list.get(3); ///这里就出现了你上边的错误
解决方案 »
- webspere6.1.0.17+struts2+spring+hibernate,发布应用程序,报Error 404: SRVE0190E: 找不到文件
- 程序发布的问题!求助。分不够在加
- 为什么总是提示:There is no Action mapped for namespace / and action name mailAction
- myeclipse为mysql数据库 生成hibernate映射文件出错
- 关于字符串反转的问题
- dwr列表返回为空,怎么回事情呢
- 【我在webapps下面放了一个一般的文件夹(里面不含jsp,html),我应该怎么访问这个文件啊?】
- 一个struts标签问题
- JSF框架的菜鸟问题。请高手指点。
- 如何从html文件中提取所需的文本信息?请执教啊。
- jbpm谁会
- 菜鸟的问题,有java基础,学会EJB大概要多长时间?
估计只有调整数据库连接池的大小。或者看看数据库连接释放完全没有。或者伸几数据库服务起。
import javax.naming.InitialContext;
import javax.naming.Context;
import javax.naming.NamingException;import java.sql.Statement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import javax.sql.DataSource;
public class DBConnect{ private Connection _conn = null;
public String _charsetDB = "gb2312"; //所连接数据库的字符集:cp850、iso_1等,在ConnectionPool.xml定义
public String _charsetFromWEB = "GB2312"; //WEB读入环境所使用的字符集GB2312、iso-8859-1、UTF-8等,因环境不同而不同!
public String _charsetToWEB = "GB2312"; //输出WEB所使用的字符集GB2312、iso-8859-1、UTF-8等,因环境不同而不同!
private String _errorString = null;
private String[][] _resultArray; //查询的结果数据
private int allRow = 0; //select结果集总的行数
private int cacheRecords = 10; //Database records cache number
public void DBConnect(){
} public boolean createConnect(){
boolean status = true;
try{
// 调用mssql的java类库建立连接
Context iniCtx = new InitialContext();
DataSource ds = (DataSource) iniCtx.lookup("java:comp/env/jdbc/xshrDS");
_conn = ds.getConnection();
}
catch(NamingException ne){
_errorString = "查找数据源错误:" + ne.toString();
status = false;
}
catch(SQLException sqle){
_errorString = "数据库建立连接错误: " + sqle.toString();
status = false;
}
return status;
}
// 得到连接
public Connection getConnect(){
return _conn;
}
//执行查询select,最后一个参数为查询返回结果的列数。注意:select全部为string类型
public boolean exeQuery(String query){
return exeQuery(query,0,0,0);
}
public boolean exeQuery(String query,int columnCount){
//返回指定列
return exeQuery(query,columnCount,0,0);
}
public boolean exeQuery(String query,int columnCount,int rowCount){
//返回指定列、行
return exeQuery(query,columnCount,rowCount,0);
} public boolean exeQuery(String query,int columnCount,int rowCount,int beginRow){
//返回指定列、行 (0全部行返回),开始位置(0:第一行开始)
boolean status = true;
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try{
if(createConnect())
con = getConnect();
else
return (false); stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery(setStringFromTo(query,_charsetFromWEB,_charsetDB));
//Cache database records
rs.setFetchSize(cacheRecords);
ResultSetMetaData rsmd = rs.getMetaData();
int totalColumn = rsmd.getColumnCount();
int returnColumn = 0;
//返回列 0全部返回
if(columnCount == 0){
returnColumn = totalColumn;
}
else{
if(totalColumn > columnCount)
returnColumn = columnCount;
else
returnColumn = totalColumn;
}
if(rs.last()){
allRow = rs.getRow();
//结果集所有行
if(allRow <= beginRow){
_resultArray = new String[0][0];
}
else{
row = allRow - beginRow;
//返回行 0全部返回
if(rowCount == 0)
count = row;
else{
if(row > rowCount)
count = rowCount;
else
count = row;
}
_resultArray = new String[count][returnColumn];
if(beginRow == 0)
rs.beforeFirst();
else
rs.absolute(beginRow);
j = 0;
while (rs.next()){
if(j == count) break;
for(int i=0;i < returnColumn;i++){
_resultArray[j][i] = setStringFromTo(rs.getString(i+1),_charsetDB,_charsetToWEB);
}
j++;
}
}
}
else{
_resultArray = new String[count][returnColumn];
}
}
catch(SQLException sqle){
_errorString = "数据库获取结果集失败: " + sqle.toString();
status = false;
}
catch (Exception e){
_errorString = "数据库获取结果集时应用程序发生意外: \n" + e.toString();
e.printStackTrace();
status = false;
}
finally{
try{
// 关闭连接,同时关闭结果集
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (con != null) con.close();
}
catch (SQLException sqle){
_errorString = "关闭数据库连接失败: \n" + sqle.toString();
status = false;
}
}
return status;
} public boolean exeCount(String query){
boolean status = true;
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try{
if(createConnect())
con = getConnect();
else
return (false);
stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery(query);
if(rs.next()){
allRow = rs.getInt(1);
}
}
catch(SQLException sqle){
_errorString = "数据库获取结果集失败: " + sqle.toString();
status = false;
}
catch (Exception e){
_errorString = "数据库获取结果集时应用程序发生意外: \n" + e.toString();
e.printStackTrace();
status = false;
}
finally{
try{
// 关闭连接,同时关闭结果集
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (con != null) con.close();
}
catch (SQLException sqle){
_errorString = "关闭数据库连接失败: \n" + sqle.toString();
status = false;
}
}
return status;
} public boolean exeUpdate(String query){ boolean status = true;
Statement stmt = null;
Connection con = null;
try{
if(createConnect())
con = getConnect();
else
return (false);
if(con == null){
_errorString = "数据库建立连接失败: <br>可能原因:<br>1. 系统太忙,请稍候再试;<br>2. JDBC无法加载;<br>3. 系统无法登录!";
return (false);
}
stmt = con.createStatement();
stmt.executeUpdate(setStringFromTo(query,_charsetFromWEB,_charsetDB));
}
catch(SQLException sqle){
_errorString = "数据库(Update)更新失败: " + sqle.toString();
status = false;
}
catch (Exception e){
_errorString = "应用程序发生意外(Update) : \n" + e.toString();
e.printStackTrace();
status = false;
}
finally{
try{
// 关闭连接
if (stmt != null) stmt.close();
if (con != null) con.close();
}
catch (SQLException sqle){
_errorString = "关闭数据库连接失败: \n" + sqle.toString();
status = false;
}
}
return status;
} public boolean exeUpdate(String[] queryArray){ boolean status = true;
Connection con = null;
boolean foreAutoCommit = true;
Statement[] stmt = new Statement[queryArray.length];
try{
if(createConnect())
con = getConnect();
else
return (false);
if(con == null){
_errorString = "数据库建立连接失败: <br>可能原因:<br>1. 系统太忙,请稍候再试;<br>2. JDBC无法加载;<br>3. 系统无法登录!";
return (false);
}
foreAutoCommit = con.getAutoCommit();
con.setAutoCommit(false);
for(int i=0; i < queryArray.length; i++){
stmt[i] = con.createStatement();
stmt[i].executeUpdate(setStringFromTo(queryArray[i],_charsetFromWEB,_charsetDB));
}
con.commit();
}
catch(SQLException sqle){
try{
con.rollback();
_errorString = "数据库记录更新操作失败: " + sqle.toString();
status = false;
}
catch(SQLException sqle1){
_errorString = "数据库记录更新时回滚失败: " + sqle1.toString();
status = false;
}
}
catch (Exception e){
_errorString = "数据库记录更新时应用程序发生意外: " + e.toString();
e.printStackTrace();
status = false;
}
finally{
try{
// 关闭连接,同时关闭结果集
for(int i=0; i < queryArray.length; i++){
if (stmt[i] != null) stmt[i].close();
}
if (con != null){
con.setAutoCommit(foreAutoCommit);
con.close();
}
}
catch (SQLException sqle){
_errorString = "关闭数据库连接失败: \n" + sqle.toString();
status = false;
}
}
return status;
} //查询的结果数据
public String[][] getResultArray(){
return _resultArray;
}
public String getErrorString(){
return _errorString;
}
public int getAllRow(){
return allRow;
} //读数据时,按数据库使用的字符集获取数据;写数据时,转换成数据库使用的字符集数据
public String setStringFromTo(String str,String charset1,String charset2){
if(charset1.equals("iso_1") || charset1.equals("ISO_1")) charset1 = "iso-8859-1";
if(charset2.equals("iso_1") || charset2.equals("ISO_1")) charset2 = "iso-8859-1";
try{
if(str == null) return "";
String temp_p=str.trim();
if(str.length() == 0) return "";
return new String(temp_p.getBytes(charset1),charset2);
}
catch(Exception e){
System.out.println("err");
return str;
}
}
}
<attribute name="MinSize">0</attribute>
<attribute name="MaxSize">1000</attribute>
<attribute name="BlockingTimeoutMillis">1000</attribute>
<attribute name="IdleTimeoutMinutes">10</attribute>