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

📄 databasesaver.java

📁 矩阵的QR分解算法
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        // class    result.enable(Capability.NOMINAL_CLASS);    result.enable(Capability.NUMERIC_CLASS);    result.enable(Capability.DATE_CLASS);    result.enable(Capability.NO_CLASS);    result.enable(Capability.MISSING_CLASS_VALUES);        return result;  }     /**   * Opens a connection to the database   *   */  public void connectToDatabase() {         try{        if(!m_DataBaseConnection.isConnected())            m_DataBaseConnection.connectToDatabase();      } catch(Exception ex) {	printException(ex);       }      }    /**    * Writes the structure (header information) to a database by creating a new table.   *    * @throws Exception if something goes wrong   */  private void writeStructure() throws Exception{        StringBuffer query = new StringBuffer();      Instances structure = getInstances();      query.append("CREATE TABLE ");      if(m_tabName || m_tableName.equals(""))        m_tableName = structure.relationName();      if(m_DataBaseConnection.getUpperCase()){        m_tableName = m_tableName.toUpperCase();        m_createInt = m_createInt.toUpperCase();         m_createDouble = m_createDouble.toUpperCase();         m_createText = m_createText.toUpperCase();       }      m_tableName = m_tableName.replaceAll("[^\\w]","_");      query.append(m_tableName);      if(structure.numAttributes() == 0)          throw new Exception("Instances have no attribute.");      query.append(" ( ");      if(m_id){        if(m_DataBaseConnection.getUpperCase())              m_idColumn = m_idColumn.toUpperCase();        query.append(m_idColumn);        query.append(" ");        query.append(m_createInt);        query.append(" PRIMARY KEY,");      }      for(int i = 0;i < structure.numAttributes(); i++){          Attribute att = structure.attribute(i);          String attName = att.name();          attName = attName.replaceAll("[^\\w]","_");          if(m_DataBaseConnection.getUpperCase())              query.append(attName.toUpperCase());          else              query.append(attName);          if(att.isDate())              query.append(" DATE");          else{              if(att.isNumeric())                  query.append(" "+m_createDouble);              else                  query.append(" "+m_createText);          }          if(i != structure.numAttributes()-1)              query.append(", ");      }      query.append(" )");      //System.out.println(query.toString());      m_DataBaseConnection.update(query.toString());      m_DataBaseConnection.close();      if(!m_DataBaseConnection.tableExists(m_tableName)){          throw new IOException("Table cannot be built.");      }  }    /**   * inserts the given instance into the table   *    * @param inst the instance to insert   * @throws Exception if something goes wrong   */  private void writeInstance(Instance inst) throws Exception{        StringBuffer insert = new StringBuffer();      insert.append("INSERT INTO ");      insert.append(m_tableName);      insert.append(" VALUES ( ");      if(m_id){        insert.append(m_count);        insert.append(", ");        m_count++;      }      for(int j = 0; j < inst.numAttributes(); j++){        if(inst.isMissing(j))            insert.append("NULL");        else{            if((inst.attribute(j)).isNumeric())                insert.append(inst.value(j));            else{                String stringInsert = "'"+inst.stringValue(j)+"'";                if (stringInsert.length() > 2)                  stringInsert = stringInsert.replaceAll("''","'");                insert.append(stringInsert);            }        }        if(j != inst.numAttributes()-1)            insert.append(", ");      }      insert.append(" )");      //System.out.println(insert.toString());      if (m_DataBaseConnection.update(insert.toString()) < 1) {        throw new IOException("Tuple cannot be inserted.");      }      else {	m_DataBaseConnection.close();      }  }    /**    * Saves an instances incrementally. Structure has to be set by using the   * setStructure() method or setInstances() method. When a structure is set, a table is created.    *    * @param inst the instance to save   * @throws IOException throws IOEXception.   */    public void writeIncremental(Instance inst) throws IOException{        int writeMode = getWriteMode();      Instances structure = getInstances();            if(m_DataBaseConnection == null)           throw new IOException("No database has been set up.");      if(getRetrieval() == BATCH)          throw new IOException("Batch and incremental saving cannot be mixed.");      setRetrieval(INCREMENTAL);            try{        if(!m_DataBaseConnection.isConnected())            connectToDatabase();        if(writeMode == WAIT){            if(structure == null){                setWriteMode(CANCEL);                if(inst != null)                    throw new Exception("Structure(Header Information) has to be set in advance");            }            else                setWriteMode(STRUCTURE_READY);            writeMode = getWriteMode();        }        if(writeMode == CANCEL){          cancel();        }        if(writeMode == STRUCTURE_READY){          setWriteMode(WRITE);          writeStructure();          writeMode = getWriteMode();        }        if(writeMode == WRITE){          if(structure == null)              throw new IOException("No instances information available.");          if(inst != null){            //write instance             writeInstance(inst);            }          else{          //close              m_DataBaseConnection.disconnectFromDatabase();              resetStructure();              m_count = 1;          }        }      }catch(Exception ex) {            printException(ex);       }      }    /**    * Writes a Batch of instances   *    * @throws IOException throws IOException   */  public void writeBatch() throws IOException {        Instances instances = getInstances();      if(instances == null)          throw new IOException("No instances to save");      if(getRetrieval() == INCREMENTAL)          throw new IOException("Batch and incremental saving cannot be mixed.");      if(m_DataBaseConnection == null)           throw new IOException("No database has been set up.");      setRetrieval(BATCH);      try{          if(!m_DataBaseConnection.isConnected())              connectToDatabase();          setWriteMode(WRITE);          writeStructure();          for(int i = 0; i < instances.numInstances(); i++){            writeInstance(instances.instance(i));          }          m_DataBaseConnection.disconnectFromDatabase();          setWriteMode(WAIT);          resetStructure();          m_count = 1;      } catch(Exception ex) {            printException(ex);       }      }  /**   * Prints an exception   *    * @param ex the exception to print   */    private void printException(Exception ex){        System.out.println("\n--- Exception caught ---\n");	while (ex != null) {		System.out.println("Message:   "                                   + ex.getMessage ());                if(ex instanceof SQLException){                    System.out.println("SQLState:  "                                   + ((SQLException)ex).getSQLState ());                    System.out.println("ErrorCode: "                                   + ((SQLException)ex).getErrorCode ());                    ex = ((SQLException)ex).getNextException();                }                else                    ex = null;		System.out.println("");	}        }    /**    * Gets the setting   *    * @return the current setting   */    public String[] getOptions() {    Vector options = new Vector();    if ( (getUrl() != null) && (getUrl().length() != 0) ) {      options.add("-url");      options.add(getUrl());    }    if ( (getUser() != null) && (getUser().length() != 0) ) {      options.add("-user");      options.add(getUser());    }    if ( (getPassword() != null) && (getPassword().length() != 0) ) {      options.add("-password");      options.add(getPassword());    }    if ( (m_tableName != null) && (m_tableName.length() != 0) ) {      options.add("-T");       options.add(m_tableName);    }        if (m_id)        options.add("-P");    if ( (m_inputFile != null) && (m_inputFile.length() != 0) ) {      options.add("-i");       options.add(m_inputFile);    }        return (String[]) options.toArray(new String[options.size()]);  }    /**    * Lists the available options   *    * @return an enumeration of the available options   */    public java.util.Enumeration listOptions() {           FastVector newVector = new FastVector();     newVector.addElement(new Option(           "\tThe JDBC URL to connect to.\n"           + "\t(default: from DatabaseUtils.props file)",           "url", 1, "-url <JDBC URL>"));          newVector.addElement(new Option(           "\tThe user to connect with to the database.\n"           + "\t(default: none)",           "user", 1, "-user <name>"));          newVector.addElement(new Option(           "\tThe password to connect with to the database.\n"           + "\t(default: none)",           "password", 1, "-password <password>"));          newVector.addElement(new Option(           "\tThe name of the table.\n"           + "\t(default: the relation name)",           "T", 1, "-T <table name>"));          newVector.addElement(new Option(           "\tAdd an ID column as primary key. The name is specified\n"           + "\tin the DatabaseUtils file ('idColumn'). The DatabaseLoader\n"           + "\twon't load this column.",           "P", 0, "-P"));          newVector.addElement(new Option(           "\tInput file in arff format that should be saved in database.",           "i", 1, "-i <input file name>"));          return  newVector.elements();  }    /**    * Sets the options. <p/>   *   <!-- options-start -->   * Valid options are: <p/>   *    * <pre> -url &lt;JDBC URL&gt;   *  The JDBC URL to connect to.   *  (default: from DatabaseUtils.props file)</pre>   *    * <pre> -user &lt;name&gt;   *  The user to connect with to the database.   *  (default: none)</pre>   *    * <pre> -password &lt;password&gt;   *  The password to connect with to the database.   *  (default: none)</pre>   *    * <pre> -T &lt;table name&gt;   *  The name of the table.   *  (default: the relation name)</pre>   *    * <pre> -P   *  Add an ID column as primary key. The name is specified   *  in the DatabaseUtils file ('idColumn'). The DatabaseLoader   *  won't load this column.</pre>   *    * <pre> -i &lt;input file name&gt;   *  Input file in arff format that should be saved in database.</pre>   *    <!-- options-end -->   *   * @param options the options   * @throws Exception if options cannot be set   */    public void setOptions(String[] options) throws Exception {          String tableString, inputString, tmpStr;        resetOptions();    tmpStr = Utils.getOption("url", options);    if (tmpStr.length() != 0)      setUrl(tmpStr);    tmpStr = Utils.getOption("user", options);    if (tmpStr.length() != 0)      setUser(tmpStr);    tmpStr = Utils.getOption("password", options);    if (tmpStr.length() != 0)      setPassword(tmpStr);        tableString = Utils.getOption('T', options);        inputString = Utils.getOption('i', options);        if(tableString.length() != 0){        m_tableName = tableString;        m_tabName = false;    }        m_id = Utils.getFlag('P', options);        if(inputString.length() != 0){        try{            m_inputFile = inputString;            ArffLoader al = new ArffLoader();            File inputFile = new File(inputString);            al.setSource(inputFile);            setInstances(al.getDataSet());            //System.out.println(getInstances());            if(tableString.length() == 0)                m_tableName = getInstances().relationName();        }catch(Exception ex) {            printException(ex);            ex.printStackTrace();      }        }  }    /**   * Main method.   *   * @param options should contain the options of a Saver.   */  public static void main(String [] options) {            StringBuffer text = new StringBuffer();      text.append("\n\nDatabaseSaver options:\n");      try {	DatabaseSaver asv = new DatabaseSaver();        try {          Enumeration enumi = asv.listOptions();          while (enumi.hasMoreElements()) {            Option option = (Option)enumi.nextElement();            text.append(option.synopsis()+'\n');            text.append(option.description()+'\n');        }            asv.setOptions(options);          asv.setDestination();        } catch (Exception ex) {            ex.printStackTrace();	}        //incremental                /*asv.setRetrieval(INCREMENTAL);        Instances instances = asv.getInstances();        asv.setStructure(instances);        for(int i = 0; i < instances.numInstances(); i++){ //last instance is null and finishes incremental saving            asv.writeIncremental(instances.instance(i));        }        asv.writeIncremental(null);*/                        //batch        asv.writeBatch();      } catch (Exception ex) {	ex.printStackTrace();        System.out.println(text);	}          }}

⌨️ 快捷键说明

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