?? oracle.java
字號(hào):
/**
* <p>Title: 處理數(shù)據(jù)增、刪、改的Java Bean</p>
* <p>Description: 該類是真正意義的數(shù)據(jù)Bean,只面向數(shù)據(jù),與業(yè)務(wù)無關(guān),也可用于其他項(xiàng)目,可重用度極高!</p>
* <p>Company: 大連超維計(jì)算機(jī)技術(shù)有限公司</p>
* @author 崔冠宇
* @version 1.0
*/
package client.chaowei.intraweb.bean.data;
import javax.servlet.*;
import java.io.*;
import java.sql.*;
import javax.sql.*;
import oracle.sql.BLOB;
import javax.naming.*;
import java.util.*;
import client.chaowei.intraweb.bean.util.RecordLog;
public class Oracle {
/**
* 完成數(shù)據(jù)庫的增刪改操作,要求傳入的sql語句必須為insert,update或delete
* 有返回值,-1表示操作不成功,0表示沒有更新行,正整數(shù)代表更新的行數(shù)
* @param sql
*/
public int update(String sql) {
Connection conn = getConnection();
Statement stmt = null;
int result = 0;
try {
stmt = conn.createStatement();
conn.setAutoCommit(false);
result = stmt.executeUpdate(sql);
// 如果是更新和刪除操作,記錄到日志文件
if ((sql.toLowerCase().trim().startsWith("update")||sql.toLowerCase().trim().startsWith("delete"))) {
RecordLog.println(sql);
}
stmt.close();
conn.commit();
conn.setAutoCommit(true);
conn.close();
return result;
} catch(SQLException e1) {
System.out.println("Oracle.java-->update(String sql) e1:" + e1.getMessage());
try{
conn.rollback();
conn.setAutoCommit(true);
return -1;
} catch(SQLException e2) {
System.out.println("Oracle.java-->update(String sql) e2:" + e2.getMessage());
return -1;
}
} finally {
this.disconnect(stmt, conn);
}
}
/**
* 傳入一組sql語句,完成數(shù)據(jù)庫的增刪改操作
*有返回值,-1表示操作不成功,0表示沒有更新行,正整數(shù)代表更新的行數(shù)
* 要求傳入的sql語句必須為insert,update或delete。
* 將這組sql語句做成一個(gè)Transaction
* @param sqlArr
*/
public int update(String[] sqlArr) {
Connection conn = getConnection();
Statement stmt = null;
int result = 0;
try {
stmt = conn.createStatement();
conn.setAutoCommit(false);
for (int i = 0; i < sqlArr.length; i++) {
// 如果是更新和刪除操作,記錄到日志文件
if ( (sqlArr[i].toLowerCase().trim().startsWith("update") ||
sqlArr[i].toLowerCase().trim().startsWith("delete"))) {
RecordLog.println(sqlArr[i]);
}
result += stmt.executeUpdate(sqlArr[i]);
}
stmt.close();
conn.commit();
conn.setAutoCommit(true);
conn.close();
return result;
} catch(SQLException e1) {
System.out.println("Oracle.java-->update(String[] sqlArr) e1:" + e1.getMessage());
try{
conn.rollback();
conn.setAutoCommit(true);
return -1;
} catch(SQLException e2) {
System.out.println("Oracle.java-->update(String[] sqlArr) e2:" + e2.getMessage());
return -1;
}
} finally {
this.disconnect(stmt, conn);
}
}
/**
* 更新Blob類型查詢結(jié)果
* @param sql
* @param columnName
* @param sis
*/
public void updateBlob(String sql, String sqlBlob, String columnName, ServletInputStream sis, int fileSize) {
Connection conn = null;
ResultSet rs = null;
Statement stmt = null;
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
oracle.sql.BLOB content = null;
try {
conn = getConnection();
conn.setAutoCommit(false);
stmt = conn.createStatement();
stmt.executeUpdate(sql);
rs = stmt.executeQuery(sqlBlob);
while (rs.next()) {
content = (oracle.sql.BLOB)rs.getBlob(columnName);
}
bos = new BufferedOutputStream(content.getBinaryOutputStream());
bis = new BufferedInputStream(sis);
byte[] buffer = new byte[ content.getBufferSize() ];
int bytesRead = 0;
int hasRead = 0;
while( ( bytesRead = bis.read( buffer ) ) != -1 ) {
hasRead += bytesRead;
if (hasRead > fileSize) {
bytesRead = bytesRead - (hasRead - fileSize);
}
bos.write( buffer, 0, bytesRead );
}
bos.flush();
bos.close();
conn.commit();
conn.setAutoCommit(true);
} catch(Exception e1) {
System.out.println("Oracle.java-->updateBlob e1:" + e1.getMessage());
try {
conn.rollback();
conn.setAutoCommit(true);
bos.flush();
bos.close();
} catch (Exception e2) {
System.out.println("Oracle.java-->updateBlob e2:" + e2.getMessage());
}
} finally {
this.disconnect(rs, stmt, conn);
}
}
/**
* 返回Blob類型查詢結(jié)果
* @param sql
* @param columnName
* @return
*/
public Blob getBlob(String sql, String columnName) {
Connection conn = null;
ResultSet rs = null;
Statement stmt = null;
Blob blob = null;
try {
conn = getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
while (rs.next()) {
blob = rs.getBlob(columnName);
}
} catch(Exception e) {
System.out.println("Oracle.java-->getBlob:" + e.getMessage());
} finally {
this.disconnect(rs, stmt, conn);
}
return blob;
}
/**
* 返回一行一列查詢結(jié)果
* @param sql
* @param columnName
* @return
*/
public String getSnglRowSnglCol(String sql, String columnName) {
Connection conn = null;
ResultSet rs = null;
Statement stmt = null;
String str = "";
try {
conn = getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();
String colType = rsmd.getColumnTypeName(1);
while (rs.next()) {
if (colType.equals("CLOB")) {
Clob clob = rs.getClob(columnName);
str = clob.getSubString(1,(int)clob.length());
} else {
str = rs.getString(columnName);
}
}
} catch(Exception e) {
System.out.println("Oracle.java-->getSnglRowSnglCol:" + e.getMessage());
} finally {
this.disconnect(rs, stmt, conn);
}
return str;
}
/**
* 返回一行多列查詢結(jié)果
* @param sql
* @param columnName
* @return
*/
public String[] getSnglRowMultiCol(String sql, String[] colArr) {
Connection conn = null;
ResultSet rs = null;
Statement stmt = null;
Vector v = new Vector();
String[] colType = new String[colArr.length];
try {
conn = getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
colType[i-1] = rsmd.getColumnTypeName(i);
}
while (rs.next()) {
for (int i = 0; i < colArr.length; i++) {
if (colType[i].equals("CLOB")) {
Clob clob = rs.getClob(colArr[i]);
v.addElement(clob.getSubString(1,(int)clob.length()));
} else {
v.addElement(rs.getString(colArr[i]));
}
}
}
} catch(Exception e) {
System.out.println("Oracle.java-->getSnglRowMultiCol:" + e.getMessage());
} finally {
this.disconnect(rs, stmt, conn);
}
return this.cvtVtrToArr(v);
}
/**
* 返回多行一列查詢結(jié)果
* @param sql
* @param columnName
* @return
*/
public String[] getMultiRowSnglCol(String sql, String columnName) {
Connection conn = null;
ResultSet rs = null;
Statement stmt = null;
Vector v = new Vector();
try {
conn = getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();
String colType = rsmd.getColumnTypeName(1);
while (rs.next()) {
if (colType.equals("CLOB")) {
Clob clob = rs.getClob(columnName);
v.addElement(clob.getSubString(1,(int)clob.length()));
} else {
v.addElement(rs.getString(columnName));
}
}
} catch(Exception e) {
System.out.println("Oracle.java-->getMultiRowSnglCol:" + e.getMessage());
} finally {
this.disconnect(rs, stmt, conn);
}
return this.cvtVtrToArr(v);
}
/**
* 返回多行多列查詢結(jié)果
* @param sql
* @param colArr
* @return
*/
public String[][] getMultiRowMultiCol(String sql, String colArr[]) {
Connection conn = null;
ResultSet rs = null;
Statement stmt = null;
Vector v = new Vector();
int colCount = colArr.length;
String[] colType = new String[colCount];
try {
conn = getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -