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

📄 jdbop.java

📁 哈工大CERP系统Java源码及开发说明.rar 内容十分详尽
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
  public boolean createIndex(String idxName, String tblName, boolean isUnique, IdxField[] fields) {
    m_errMsg = "";

    String mySql = "Create ";   //创建索引语句
try{
    if (preDbObj == null) {//连接还没有建立,以缺省方式建立之
      if (!createConnect()){
        m_errMsg = preDbObj.m_errMsg;
        return false;
      }
      return false;
    }

    //检查参数是否有效
    if (idxName.length() == 0)  {
      m_errMsg = "空的索引名";
      return false;
    }
    if (tblName.length() == 0)  {
      m_errMsg = "要建索引的表名无效:" + tblName;
      return false;
    }

    if (preDbObj.hasIndex(tblName,idxName))
      return true;

    if (fields.length == 0) {
      m_errMsg = "没有索引字段定义";
      return false;
    }

    //创建索引
    int loopCounter;
    if (isUnique)
      mySql += "Unique ";
    mySql += "Index " + idxName + " on " + tblName + "(";
    for (loopCounter = 0; loopCounter < fields.length; loopCounter++) {
      if (loopCounter == 0)
        mySql += fields[loopCounter].fieldName;
      else
        mySql += "," + fields[loopCounter].fieldName;
      if (!fields[loopCounter].isAsc) {
        //降序
        mySql += " Desc";
      }

    }
    mySql += ")";

    //创建索引
    Statement st = preDbObj.conn.createStatement();
//System.out.println(mySql);
    st.execute(mySql);

   return true;
}catch (Exception e) {
 m_errMsg = e.toString() + "--\n" + mySql;
 System.out.println(m_errMsg);
 return false;
}
  }

  /**
   * Title: 构造函数
   * Description: 本函数按照数据库类型和URL初始化数据库
   * @Param: type 数据库类型。可用常量在DbType类中定义
   * @param: url 要连接的数据库。可用常量在DbUrl中定义
   */
  public JdbOp(int type, int url) throws Exception {
    if (!createConnect(type, url))
      throw new Exception("无法建立数据库连接");
  }
  /**
    * 构造函数
    * @param Connection conn 数据库连接
   */
    public JdbOp(Connection conn) throws Exception{
        m_conn = conn;
        m_statement = m_conn.createStatement();
    }

  /**
   * @Title: 建立数据库连接对象
   * @Description: 本函数按照数据库类型和URL初始化数据库
   * @Param: type 数据库类型。可用常量在DbType类中定义
   * @param: url 要连接的数据库。可用常量在DbUrl中定义
   */
  boolean createConnect(int type, int url) throws Exception {
    if (preDbObj != null)
      preDbObj.finalize();  //已经存在对象,消除之
    preDbObj = new JdbObj(type,url);    //创建数据连接对象
    if (preDbObj.active(DbConstStr.DEVPASSWORD))  //激活并建立数据库连接
      m_conn = preDbObj.conn;
    else
      {m_errMsg = preDbObj.m_errMsg;
       return false;
      }
    m_statement = m_conn.createStatement();
    return true;
  }

  /**
   * @Title: 建立数据库连接对象
   * @Description: 本函数以缺省方式建立数据库连接对象
   */
  boolean createConnect() throws Exception {
    if (preDbObj != null)
      preDbObj.finalize();  //已经存在对象,消除之
    preDbObj = new JdbObj();    //创建数据连接对象

    if (preDbObj.active(DbConstStr.DEVPASSWORD))  //激活并建立数据库连接
      m_conn = preDbObj.conn;
    else
      {m_errMsg = preDbObj.m_errMsg;
       return false;
      }

    m_statement = m_conn.createStatement();
   return true;
  }

  /**
   * 根据给出的参数创建数据库联接对象。本函数应和JdbOp()构造函数连用,只适用于cerp系统
   * @param companyCode 要联接的公司号
   * @param year  要联接的年号
   * @param sysCode 要联接的子系统号
   * @return  成功时返回true,否则返回false
   * @throws Exception  抛出所有例外
   */
  public boolean createConnect(String companyCode,String year,String sysCode) throws Exception {
    if (preDbObj != null)
      preDbObj.finalize();  //已经存在对象,消除之
    preDbObj = new JdbObj();    //创建数据连接对象
    if (preDbObj.active(DbConstStr.DEVPASSWORD,companyCode,year,sysCode))  //激活并建立数据库连接
      m_conn = preDbObj.conn;
    else
      {m_errMsg = preDbObj.m_errMsg;
       return false;
      }

    m_statement = m_conn.createStatement();
   return true;
  }

  /**
   * @Title: 建立数据库连接对象
   * @Description: 本函数按照用户的请求方式建立数据库连接对象。这是cerp9的连接方式
   * @param sessionCode: 会话代码
   * @param sysCode: 请求的系统代码
   */
  protected boolean createConnect(String sessionCode, String sysCode) {
  try {
    if (preDbObj != null)
      preDbObj.finalize();  //已经存在对象,消除之
    if (!cfgFile.equalsIgnoreCase(""))
      preDbObj = new JdbObj(sessionCode,sysCode,cfgFile);    //创建数据连接对象
    else
      preDbObj = new JdbObj(sessionCode,sysCode);    //创建数据连接对象

    if (preDbObj.active(DbConstStr.DEVPASSWORD))  //激活并建立数据库连接
      m_conn = preDbObj.conn;
    else
      {m_errMsg = preDbObj.m_errMsg;
       return false;
      }
    m_statement = m_conn.createStatement(preDbObj.m_scrollType,preDbObj.m_updateType);
//    m_statement = m_conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
    if (m_statement == null)
      throw (new Exception("创建会话句并失败"));

   this.sessionCode = sessionCode;
   return true;
  }catch (Exception e)  {
    m_errMsg = "JdbOp:createConnect: " + e;
    return false;
  }

  }

  /**
   * 设置返回的结果集类型。该设置生效后,当前的会话句并将被关闭
   * @param scrollType: 结果集光标滚动类型
   * @param updateType: 结果集更新模式
   */
   public void setRstType(int scrollType, int updateType) throws Exception{
    m_errMsg = "";
    if (m_statement != null)
      m_statement.close();
    m_statement = m_conn.createStatement(scrollType,updateType);

   }

  /**
   * 生成结果集
   * Description: 如果多次调用本功能将只能保存当前结果集
   * @param mySql: 用于产生结果集的语句
   */
   public ResultSet getData(String mySql) throws Exception {
        m_errMsg = "";
    try {
       // System.out.println("Native Form: " + m_conn.nativeSQL(mySql));
      ResultSet rs = m_statement.executeQuery(mySql);

      return rs;
    }
    catch (Exception e) {
      m_errMsg =this.getClass().getName() + ".getData(): " + e;
//      return null;
      System.out.println(m_errMsg+":\n" + mySql);
      throw new Exception(m_errMsg);
   }
  }

  /**
   * 生成结果集
   * Description: 本方法使用新的会话返回结果集。
   * @param mySql: 用于产生结果集的语句
   */
   public ResultSet getDataNew(String mySql) {
        m_errMsg = "";
    try {
       // System.out.println("Native Form: " + m_conn.nativeSQL(mySql));
      Statement st = m_conn.createStatement(preDbObj.m_scrollType,preDbObj.m_updateType);
      ResultSet rs = st.executeQuery(mySql);

      return rs;
    }
    catch (Exception e) {
      m_errMsg =this.getClass().getName() + ".getDataNew(): " + e;
      System.out.println(m_errMsg);
      return null;
   }
  }

  /**
   * 执行Sql语句
   * @param mySql: 要执行的Sql语句
   */
  public boolean exeSql(String mySql) {
    m_errMsg = "";
try{
    Statement st = m_conn.createStatement();
    st.execute(mySql);
    st.close();
    return true;
}catch (Exception e)  {
  m_errMsg =this.getClass().getName() + ".exeSql(): " + e + "语句如下:\n" + mySql;
  System.out.println(m_errMsg);
  return false;
}
  }

  /**
   * 执行Sql语句,该语句使用新的会话,因而不破坏已经返回的结果集
   * @param mySql: 要执行的Sql语句
   */
  public boolean exeSqlNT(String mySql) {
    m_errMsg = "";
try{
    Statement st = m_conn.createStatement();
    boolean rt = st.execute(mySql);
    st.close();
    return rt;
}catch (Exception e)  {
  m_errMsg =this.getClass().getName() + ".exeSql(): " + e;
  System.out.println(m_errMsg);
  return false;
}
  }

  /**
   * 将结果集转换为Vector向量,向量由一维字符串数组组成。第零个数组为的字段名
   * @param Rst:要转换的结果集
   * @return 成功是返回向量,否则返回null;
   */
  public Vector rst2Vector(ResultSet rst) throws Exception {
  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开始
     vRst.addElement(colname);    //字段名数组位于0位置
//System.out.println("cr field");

     //形成记录集,从矢量的索引1开始
     rst.beforeFirst();
     while (rst.next())
       {String row[] = new String[colcount];
        for (i=0; i<colcount; i++)
          {row[i] = rst.getString(i+1);
           if (row[i]==null)
             row[i] = "";
          }
//System.out.println(row[0]);
        vRst.addElement(row);
       }

    return vRst;
  }catch (Exception e)  {
    return null;
  }

  }

  /**
   * 将结果集转换为Vector向量,向量由一维字符串数组组成。通过参数可以选择生成或不生成字段名头。
   * @param rst 要转换的结果集
   * @param hasTitle
   * @return 成功时返回向量,否则返回null;
   * @throws Exception 抛出所有错误
   */
  public Vector rst2Vector(ResultSet rst, boolean hasTitle) throws Exception {
    Vector vc = rst2Vector(rst);
    if (!hasTitle)
      vc.remove(0);
    return vc;
  }

  /**
   * 将结果集转换为Vector向量,向量由HashMap对象组成。每个HashMap对象由字段名作为键值,字段值字符串作为值

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -