📄 jdbop.java
字号:
* @param rst 要转换的结果集
* @return 成功时返回向量,否则返回null;
* @throws Exception 抛出所有错误
*/
public Vector rst2HashVector(ResultSet rst) {
try {
Vector vRst = new Vector();
//获取表头信息
ResultSetMetaData rstm = rst.getMetaData();
//System.out.println("getmeta");
int colcount = rstm.getColumnCount(), i;
String colname[] = new String[colcount];
//形成字段名数组
for (i=1; i<=colcount; i++)
colname[i-1] = rstm.getColumnName(i); //字段名从1开始,数组应从0开始
//System.out.println("cr field");
//形成记录集,从矢量的索引1开始
rst.beforeFirst();
while (rst.next())
{HashMap hm = new HashMap();
for (i=0; i<colcount; i++)
hm.put(colname[i],rst.getString(i+1));
vRst.addElement(hm);
}
rst.beforeFirst();
return vRst;
}catch (Exception e) {
return null;
}
}
/**
* 返回当前纪录的哈希映射。
* @param rst 包括当前纪录的结果集。
* @return 成功时返回当前纪录的哈希映射,如果结果集的光标在第一条记录之前,自返回第一条纪录。失败时返回null。
*/
public HashMap recMap(ResultSet rst) {
try {
if (rst.isBeforeFirst())
rst.next();
//获取表头信息
ResultSetMetaData rstm = rst.getMetaData();
int colcount = rstm.getColumnCount(), i;
String colname[] = new String[colcount];
//形成字段名数组
for (i=1; i<=colcount; i++)
colname[i-1] = rstm.getColumnName(i); //字段名从1开始,数组应从0开始
//形成记录集,从矢量的索引1开始
HashMap hm = new HashMap();
for (i=0; i<colcount; i++)
hm.put(colname[i],rst.getString(i+1));
return hm;
}catch (Exception e) {
e.printStackTrace();
m_errMsg = "recMap error: " + e;
return null;
}
}
/**
* 返回与结果集相关的字段定义
* @param rst: 要抽取定义的结果集
* @return 返回的向量定义包含的数据均为FieldDef类型,只有字段名、字段类型、和字段长度被返回,失败时返回空
*/
public Vector getFieldsDef(ResultSet rst) {
m_errMsg = "";
try {
Vector vFields = new Vector();
//获取表头信息
ResultSetMetaData rstm = rst.getMetaData();
//System.out.println("getmeta");
int colcount = rstm.getColumnCount(), i;
//形成字段名数组
for (i=1; i<=colcount; i++) {
FieldDefn fd = new FieldDefn();
fd.colName = rstm.getColumnName(i); //字段名从1开始
fd.colType = rstm.getColumnType(i);
fd.colLen = rstm.getPrecision(i);
vFields.add(fd);
// vFields.addElement(new Integer(rstm.getPrecision(i)));
}
return vFields;
}catch (Exception e) {
m_errMsg =this.getClass().getName() + ".getFieldsDef(): " + e;
System.out.println(m_errMsg);
return null;
}
}
/**
* 添加批处理语句,本函数与getData使用相同的会话句柄
* @param sqlStr: 要添加的语句
* @return 成功時返回true, 否则返回false
*/
public boolean addBatchSql(String sqlStr) {
try {
if (autoCommit) {
//设置事务开始,在exeBatch中激发事务,并关闭自动执行
autoCommit = false;
m_conn.setAutoCommit(false);
}
m_statement.addBatch(sqlStr);
return true;
}catch (Exception e) {
m_errMsg =this.getClass().getName() + ".addBatchSql(): " + e;
System.out.println(m_errMsg);
return false;
}
}
/**
* 执行批处理程序
* @return 成功时返回每一条语句的的状态值数组,否则返回null
*/
public int [] exeBatchSql() throws Exception{
try{
int[] ret;
ret = m_statement.executeBatch();
autoCommit = true; //开启自动执行
m_conn.setAutoCommit(true);
m_conn.commit();
return ret;
}catch (Exception e) {
m_errMsg =this.getClass().getName() + ".exeBatchSql(): " + e;
m_errMsg += "\n事务被回滚.";
m_conn.rollback();
autoCommit = true; //开启自动执行
m_conn.setAutoCommit(true);
System.out.println(m_errMsg);
return null;
}
}
/**
* 修改一条纪录,该方法可以用来更新和删除纪录
* @param String sql 进行操作的sql语句
* @return boolean 操作成功返回 TRUE,否则返回 FALSE
*/
public boolean simpleUpdate (String sql) throws Exception
{
m_errMsg = "";
try {
if(m_conn == null)
connect();
Statement stmt = m_conn.createStatement();
boolean rt = stmt.execute(sql);
stmt.close();
return true;
}
catch(Exception e)
{
m_errMsg =this.getClass().getName() + ".exeSql(): " + e;
System.out.println(m_errMsg);
return false;
}
}
/**
* 获取错误信息
*/
public String getErrMsg() {
return m_errMsg;
}
/**
* 创建数据库
* @param dbName: 要建的数据库名
* @return 如果创建成功,则返回true并将当前数据库连接指向新的数据库,否则返回false
*/
public boolean createDataBase(String dbName) {
m_errMsg = "";
try {
exeSql("Create DataBase " + dbName);
m_conn.setCatalog(dbName);
return true;
}catch (Exception e) {
m_errMsg =this.getClass().getName() + ".createDataBase(): " + e;
System.out.println(m_errMsg);
return false;
}
}
/**
* 设置数据库对象的自动销毁方式
* @param autoClose: 为true时自动关闭联接,这也是缺省方式
*/
public void setAutoClose(boolean autoClose) {
preDbObj.setAutoClose(autoClose);
}
public void finalize() {
/**@todo: Override this java.lang.Object method*/
}
/**
* 插入一条记录 added by wujian
* @return boolean 操作成功返回 TRUE,否则返回 FALSE
* @param String table 表名
* @param Map recordMap 字段名称及取值
*/
public boolean insert(String table,
Map recordMap) throws SQLException, Exception
{
if(m_conn==null) connect();
Statement statement = m_conn.createStatement();
String field="", value="", mfields="", mvalues="";
Iterator itf = recordMap.keySet().iterator();
while(itf.hasNext()) {
field = (String)itf.next();
value = (String)recordMap.get(field);
value = value==null ? "":value;
mfields += field + ",";
mvalues += "'" + value + "',";
}
mfields = mfields.substring(0, mfields.length() - 1);
mvalues = mvalues.substring(0, mvalues.length() - 1);
String mySql = "INSERT INTO " + table + "("
+ mfields + ") VALUES(" + mvalues + ")";
System.out.println(mySql);
statement.execute(mySql);
return true;
}
/**
* 按照不同的数据库类型转换数据库调用函数。由于不同数据库可能有相同功能的函数,但调用名称和方法不同,本函数将对其进行转换。
* 本函数只能用于CERP系统
* @param funcExp 要转换的函数表达式
* @return 成功时返回转换后的函数表达式,否则返回null
*/
public String convertDbFunc(String funcExp) {
m_errMsg="";
try {
return funcExp;
}catch (Exception e) {
e.printStackTrace();
m_errMsg = "convertDbFunc: " + e;
return null;
}
}
/**
* 按照不同的数据库类型转换数据库调用函数。由于不同数据库可能有相同功能的函数,但调用名称和方法不同,本函数将对其进行转换。
* 本函数只能用于CERP系统
* @param funcExp 要转换的函数表达式
* @param dbName 数据库名,它必须是JdbOp定义的DBNAME常数的一部分
* @return
*/
public static String convertDbFunc(String funcExp,int dbName) {
try {
return funcExp;
}catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 删除一条记录
* @return boolean 操作成功返回 TRUE,否则返回 FALSE
* @param String table 表名
* @param String criteria 筛选条件
*/
public boolean deleteBatch(String table, String criteria)
{m_errMsg = "";
try {
if(m_conn==null) connect();
Statement statement = m_conn.createStatement();
addBatchSql("DELETE FROM " + table + " WHERE " + criteria);
return true;
}
catch(Exception e) {
// disConnect();
System.out.println(e.toString());
return false;
}
}
/**
* 插入一条记录 added by wujian
* @return boolean 操作成功返回 TRUE,否则返回 FALSE
* @param String table 表名
* @param Map recordMap 字段名称及取值
*/
public boolean insertBatch(String table,
Map recordMap) throws SQLException, Exception
{
if(m_conn==null) connect();
Statement statement = m_conn.createStatement();
String field="", value="", mfields="", mvalues="";
Iterator itf = recordMap.keySet().iterator();
while(itf.hasNext()) {
field = (String)itf.next();
value = (String)recordMap.get(field);
value = value==null ? "":value;
mfields += field + ",";
mvalues += "'" + value + "',";
}
mfields = mfields.substring(0, mfields.length() - 1);
mvalues = mvalues.substring(0, mvalues.length() - 1);
String mySql = "INSERT INTO " + table + "("
+ mfields + ") VALUES(" + mvalues + ")";
// System.out.println(mySql);
addBatchSql(mySql);
return true;
}
}//end of class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -