读书人

写个数据库连接如何会内存越界呢。

发布时间: 2013-01-23 10:44:49 作者: rapoo

写个数据库连接怎么会内存越界呢。。
代码 :
——————————————————————————————————————————————————————————————————————————————————————
basedao:
package dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class BaseDao {
public final static String driver = "oracle.jdbc.driver.OracleDriver";
public final static String url = "jdbc:oracle:thin:@192.168.1.250:1521:YIDEEORC102010";
public final static String dbName = "estock";
public final static String dbPass = "estock";

public Connection getConn() throws ClassNotFoundException, SQLException
{
Class.forName(driver);
Connection conn = DriverManager.getConnection(url,dbName,dbPass);

return conn;
}

public void closeAll(Connection conn,PreparedStatement pstmt,ResultSet rs)
{
if(rs != null)
{
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("3333");
}
}

if(pstmt != null)
{
try {
pstmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("222");
}
}

if(conn != null)
{
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("111");
}
}
}

public int executeSQL(String preparedSql,String[] param)
{
Connection conn = null;
PreparedStatement pstmt = null;
int num = 0;

try {
conn = getConn();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("aa");
}
try {
pstmt = conn.prepareStatement(preparedSql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("ccc");
}

if(param != null)
{
for(int i=0;i<param.length;i++)
{
try {
pstmt.setString(i+1, param[i]);
System.out.println("aa");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("qas");
}
}
}
try {
num = pstmt.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("sdwe");
}
closeAll(conn,pstmt,null);
return num;
}

}
————————————————————————————————————————————————————————————
main:
package test;

import java.sql.Connection;
import java.sql.SQLException;

import dao.BaseDao;



public class BaseDaoTest {

/**
* @param args
* @throws SQLException
* @throws ClassNotFoundException
*/
public static void main(String[] args){
BaseDao baseDao = new BaseDao();
Connection conn = null;

try {
conn = baseDao.getConn();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("ssqasd");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally
{
baseDao.closeAll(conn, null, null);
}

}

}

-------------------------------------------------------------------------------------------
报错 :
java.lang.ArrayIndexOutOfBoundsException: 0
at oracle.jdbc.driver.OracleSql.main(OracleSql.java:1661)


---------------------------------------------------------------------
求大神~~~~
[解决办法]
oracle.jdbc.driver.OracleSql.main(OracleSql.java:1661)
这个应该是你测试类里面报错的
[解决办法]
你确定代码全贴出来了?
这段代码是没问题的
[解决办法]
看了下代码没有问题 main方法中只是单纯做连接便获取connection对象 并没有做任何操作 不存在问题... 并没有执行到public int executeSQL(String preparedSql, String[] param) ,应该不会报数组越界。。。。
[解决办法]
如果用的是Oracle11的话,有一个版本的驱动有问题的。

读书人网 >J2EE开发

热点推荐