Oracel 原始ResultSet数据获取/更新方法
public Vector<Hashtable<String,String>> getRecords(String sql, Vector<Object> params, Connection conn, boolean closeConn){
Vector<Hashtable<String,String>> vht = new Vector<Hashtable<String, String>>();
PreparedStatement stmt = null;
ResultSet rs = null;
try {
stmt = conn.prepareStatement(sql);
if(params != null && params.size() >0){
for(int i=0;i<params.size();i++){
int index = i+1;
stmt.setObject(index, params.get(i));
}
}
rs= stmt.executeQuery();
while(rs.next()){
ResultSetMetaData rsmd = rs.getMetaData();
int colCount = rsmd.getColumnCount();
Hashtable<String, String> ht = new Hashtable<String, String>();
for(int i= 0;i<colCount; i++){
String colName = rsmd.getColumnName(i+1);
String val = rs.getString(colName);
if(colName != null && val != null){
ht.put(colName,val);
}
}
if(ht != null)vht.add(ht);
}
return vht;
} catch (SQLException e) {
e.printStackTrace();
}finally{
if (stmt != null){
try{
stmt.close();
}catch(SQLException e){System.out.println(e);}
}
if(closeConn){
if (conn != null){
try{
conn.close();
}catch(SQLException e){}
}
}
if(rs!= null){
try {
rs.close();
} catch (SQLException e) {System.out.println(e);}
}
}
return null;
}
public int UpdateRecord(String sql, Vector<Object> params, Connection conn, boolean closeConn){
PreparedStatement stmt = null;
int numUpd = 0;
try {
stmt = conn.prepareStatement(sql);
if(params != null && params.size() >0){
for(int i=0;i<params.size();i++){
int index = i+1;
stmt.setObject(index, params.get(i));
}
}
numUpd = stmt.executeUpdate();
conn.commit();
return numUpd;
}catch (SQLException e){
System.out.println("SQLEXP:==="+e);
e.printStackTrace();
if(conn != null){
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
}
}finally{
if (stmt != null){
try{
stmt.close();
}catch(SQLException e){System.out.println(e);}
}
if(closeConn){
if (conn != null){
try{
conn.close();
}catch(SQLException e){System.out.println(e);}
}
}
}
return numUpd;
}
public int UpdateRecords(String sql, Vector<Vector<Object>> multi_params, int data_count, Connection conn, boolean closeConn){
PreparedStatement stmt = null;
int numUpd = 0;
try {
stmt = conn.prepareStatement(sql);
for(int i=0;i<multi_params.size();i++){
Vector<Object> params = multi_params.get(i);
for(int j=0;j<params.size();j++){
int index = j+1;
stmt.setObject(index, params.get(j));
}
stmt.addBatch();
if( (data_count > 0 && (i+1)%data_count == 0) || data_count == 0){
stmt.executeBatch();
stmt.clearBatch();
}
}
int[] numUpds = stmt.executeBatch();
stmt.clearBatch();
conn.commit();
if(numUpds.length >0){
for(int i=0;i<numUpds.length;i++){
numUpd += numUpds[i];
}
}
return numUpd;
}catch (SQLException e){
e.printStackTrace();
System.out.println("SQLEXP:"+e);
if(conn != null){
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
}
}finally{
if (stmt != null){
try{
stmt.close();
}catch(SQLException e){System.out.println(e);}
}
if(closeConn){
if (conn != null){
try{
conn.close();
}catch(SQLException e){System.out.println(e);}
}
}
}
return numUpd;
}