⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jdbop.java

📁 哈工大CERP系统Java源码及开发说明.rar 内容十分详尽
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
   * @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 + -