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

📄 yymdb.java

📁 实现了一个简单的数据库功能.包括 录入,查询,修改,显示所有记录,等等的基本的数据库功能 .
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
  }

  public boolean existsTable(String tblname) {
    clsTable temptbl = null;
    boolean out = false;
    try {
      for (int i = 0; i < table.size(); i++) {
        temptbl = (clsTable) table.get(i);
        if (temptbl.getName().equals(tblname)) {
          out = true;
          break;
        }
      }
    }
    catch (Exception e) {
      errorMessage = "FindTableExists Error!!!";
    }
    return out;
  }

  public boolean existsField(String tblname, String fldname) {
    clsTable temptbl = null;
    clsField tempfld = null;
    boolean out = false;
    try {
      for (int i = 0; i < table.size(); i++) {
        temptbl = (clsTable) table.get(i);
        if (temptbl.getName().equals(tblname)) {
          for (int j = 0; j < temptbl.field.size(); j++) {
            tempfld = (clsField) temptbl.field.get(j);
            if (tempfld.getName().equals(fldname)) {
              out = true;
              break;
            }
          }
        }
      }
    }
    catch (Exception e) {
      errorMessage = "FindFieldExists Error!!!";
    }
    return out;
  }

  public clsTable retTableRef(int tblIndex) {
    clsTable ret = null;
    try {
      if (tblIndex < table.size()) {
        ret = (clsTable) table.get(tblIndex);
      }
      else {
        errorMessage = "(retTableRef)Error Index!";
      }
    }
    catch (Exception e) {
      errorMessage = "getTableRef Error!!!\nMessage:" + e;
    }
    return ret;
  }

  public clsTable retTableRef(String tblname) {
    clsTable ret = null;
    try {
      if (existsTable(tblname)) {
        for (int i = 0; i < table.size(); i++) {
          ret = (clsTable) table.get(i);
          if (ret.getName().equals(tblname)) {
            break;
          }
        }
      }
      else {
        errorMessage = "(retTableRef)Can't find this table!";
      }
    }
    catch (Exception e) {
      errorMessage = "getTableRef Error!!!\nMessage:" + e;
    }
    return ret;
  }

  public clsField retFieldRef(String tblname, String fldname) {
    clsTable temptbl = null;
    clsField ret = null;
    try {
      if (existsField(tblname, fldname)) {
        temptbl = retTableRef(tblname);
        for (int i = 0; i < temptbl.field.size(); i++) {
          ret = (clsField) temptbl.field.get(i);
          if (ret.getName().equals(fldname)) {
            break;
          }
        }
      }
      else {
        errorMessage = "(retFieldRef)Can't find this field!";
      }
    }
    catch (Exception e) {
      errorMessage = "getFieldRef Error!\nMessage:" + e;
    }
    return ret;
  }

  public clsField retFieldRef(String tblname, int fldIndex) {
    clsTable temptbl = null;
    clsField ret = null;
    try {
      if (existsTable(tblname)) {
        temptbl = retTableRef(tblname);
        if (fldIndex < temptbl.field.size()) {
          ret = (clsField) temptbl.field.get(fldIndex);
        }
        else {
          errorMessage = "(retFieldRef)Error Index!";
        }
      }
      else {
        errorMessage = "(retFieldRef)Can't find this table!";
      }
    }
    catch (Exception e) {
      errorMessage = "getFieldRef Error!\nMessage:" + e;
    }
    return ret;
  }

  public clsField retFieldRef(int tblIndex, int fldIndex) {
    clsTable temptbl = null;
    clsField ret = null;
    try {
      if (tblIndex < table.size()) {
        temptbl = retTableRef(tblIndex);
        if (fldIndex < temptbl.field.size()) {
          ret = (clsField) temptbl.field.get(fldIndex);
        }
      }
      else {
        errorMessage = "(retFieldRef)Error Index!";
      }
    }
    catch (Exception e) {
      errorMessage = "getFieldRef Error!\nMessage:" + e;
    }
    return ret;
  }

  public Object[] query(String tblname, String fldname, String fldvalue) {
    LinkedList out = new LinkedList();
    clsField tempfld = retFieldRef(tblname, fldname);
    try {
      if (existsTable(tblname) == true
          && existsField(tblname, fldname) == true) {
        for (int i = 0; i < tempfld.value.size(); i++) {
          if ( ( (String) tempfld.value.get(i)).equals(fldvalue)) {
            out.add( (String) tempfld.value.get(i));
          }
        }
      }
      else {
        errorMessage = "(query)Can't find this table or field!";
      }
    }
    catch (Exception e) {
      errorMessage = "Query Error!\nMessage:" + e;
    }
    return out.toArray();
  }

  public class SaxParser
      extends DefaultHandler {
    private boolean fldstart = false;
    private boolean dbstart = false;
    private boolean tblstart = false;
    private String temptblname = new String();
    private LinkedList fldval = new LinkedList();
    private String tempfldname = new String();
    private boolean ParseValue = false;
    public SaxParser(boolean isParseValue) {
      ParseValue = isParseValue;
    }

    public void startElement(String nsuri, String localName, String qName,
                             Attributes attributes) {
      if (ParseValue == false) {
        if (qName.equals("Database")) {
          dbstart = true;
          setName(attributes.getValue(0));
          System.out.println("Find a Database."
                             + attributes.getValue(0));
        }
        else if (qName.equals("Table")) {
          tblstart = true;
          temptblname = attributes.getValue(0);
          add_table(attributes.getValue(0));
          System.out.println("Find a Table."
                             + attributes.getValue(0));
        }
        else if (qName.equals("Field")) {
          fldstart = true;
          add_field(temptblname, attributes.getValue(0));
          tempfldname = attributes.getValue(0);
          System.out.println("Find a Field."
                             + attributes.getValue(0));
        }
      }
      else {
        if (qName.equals("Table")) {
          tblstart = true;
          temptblname = attributes.getValue(0);
          System.out.println("Find a Table."
                             + attributes.getValue(0));
        }
        else if (qName.equals("Field")) {
          fldstart = true;
          tempfldname = attributes.getValue(0);
          System.out.println("Find a Field."
                             + attributes.getValue(0));
        }
        else if (qName.equals("Value")) {
          if (tblstart == true && fldstart == true) {
            clsTable temptbl = null;
            clsField tempfld = null;
            for (int i = 0; i < table.size(); i++) {
              temptbl = (clsTable) table.get(i);
              if (temptbl.getName().equals(temptblname)) {
                for (int j = 0; j < temptbl.field.size(); j++) {
                  tempfld = (clsField) temptbl.field.get(j);
                  if (tempfld.getName().equals(tempfldname)) {
                    tempfld.value.add(attributes.getValue(0));
                    table.set(i, temptbl);
                    break;
                  }
                }
                break;
              }
            }
            System.out.println("Find a Field Value.");
          }
        }
      }
    }

    public void characters(char[] cha, int start, int length) {

    }

    public void endElement(String nsuri, String localName, String qName) {
      if (qName.equals("Table")) {
        tblstart = false;
        temptblname = "";
        tempfldname = "";
      }
      if (qName.equals("Field")) {
        fldstart = false;
        tempfldname = "";
      }
    }
  }

  public void finalize() {
    name = null;
    table.clear();
    table = null;
    errorMessage = null;
    System.gc();
    Runtime.getRuntime().gc();
  }
}

public class yymDB {
  clsDatabase db = new clsDatabase();
  public static void main(String args[]) {
    yymDB yymdb = new yymDB();
   
    String usrinp = new String();
    String temp = new String();
    BufferedReader input = new BufferedReader(new InputStreamReader(
        System.in));

    while (!usrinp.equals("exit")) {
      System.out.print("YYMDB->");
      try {
        usrinp = input.readLine();
        usrinp = usrinp.toLowerCase();
        if (usrinp.equals("exit")) {
          System.exit(0);
        }
        else if (usrinp.equals("modifydbname")) {
          System.out.println("Input new Database name:");
          temp = input.readLine();
          yymdb.db.setName(temp);
        }
        else if (usrinp.equals("addtable")) {
          System.out.println("Input new table name:");
          temp = input.readLine();
         yymdb.db.add_table(temp);
        }
        else if (usrinp.equals("deltable")) {
          System.out.println("Input delete table name:");
          temp = input.readLine();
          yymdb.db.del_table(temp);
        }
        else if (usrinp.equals("addfield")) {
          System.out.println("Input table name:");
          temp = input.readLine();
          String temp2 = new String();
          System.out.println("Input new field name:");
          temp2 = input.readLine();
          yymdb.db.add_field(temp, temp2);
        }
        else if (usrinp.equals("delfield")) {
          System.out.println("Input table name:");
          temp = input.readLine();
          String temp2 = new String();
          System.out.println("Input delete field name:");
          temp2 = input.readLine();
         yymdb.db.del_field(temp, temp2);
        }
        else if (usrinp.equals("printall")) {
          System.out.println(yymdb.db.return_all());
        }
        else if (usrinp.equals("modifytblname")) {
          System.out.println("Input old table name:");
          temp =   input.readLine();
          String temp2 = new String();
        }
        else if (usrinp.equals("addrow")) {
          System.out.println("Input table name:");
          temp = input.readLine();
          String addrowval[] = new String[yymdb.db
              .getFieldCount(temp)];
          for (int i = 0; i <yymdb.db.getFieldCount(temp); i++) {
            System.out.println("Input field "
                               + yymdb.db.getFieldName(temp, i) + " value:");
            addrowval[i] = input.readLine();
          }
          yymdb.db.add_row(temp, addrowval);
        }
        else if (usrinp.equals("delrow")) {
          System.out.println("Input table name:");
          temp = input.readLine();
          String temp2, temp3;
          System.out.println("Input field name");
          temp2 = input.readLine();
          System.out.println("Input field value");
          temp3 = input.readLine();
          yymdb.db.del_row(temp, temp2, temp3);
        }
        else if (usrinp.equals("savedb")) {
          System.out.println("Input file name:");
          temp = input.readLine();
          yymdb.db.saveDB(temp);
        }
        else if (usrinp.equals("opendb")) {
          System.out.println("Input file name:");
          temp = input.readLine();
          File file = new File(temp);
          if (file.exists() == true) {
            yymdb.db.openDB(temp);
          }
          else {
            System.out.println("Can't find this file!!!");
          }
        }
        else if (usrinp.equals("help")) {
          System.out.println("************************************");
          System.out.println("*          Command List            *");
          System.out.println("************************************");
          System.out.println("*modifydbname:modify database name *");
          System.out.println("************************************");
          System.out.println("*     addtable:add a table         *");
          System.out.println("************************************");
          System.out.println("*     deltable:delete a table      *");
          System.out.println("************************************");
          System.out.println("*      addfield:add a field        *");
          System.out.println("************************************");
          System.out.println("*     delfield:delete a field      *");
          System.out.println("************************************");
          System.out.println("*         addrow:add a row         *");
          System.out.println("************************************");
          System.out.println("*         delrow:del a row         *");
          System.out.println("************************************");
          System.out.println("* mdoifytblname:modify table name  *");
          System.out.println("************************************");
          System.out.println("*printall:print all table,field,row*");
          System.out.println("************************************");
          System.out.println("*   savedb:save database to file   *");
          System.out.println("************************************");
          System.out.println("*  opendb:open database from file  *");
          System.out.println("************************************");
          System.out.println("*  getmemfree:get memory free size *");
          System.out.println("************************************");
          System.out.println("\n");
        }
        else if (usrinp.equals("getmemfree")) {
          System.out.println(Runtime.getRuntime().freeMemory()
                             + " Program Memory free");
        }
        else if (usrinp.equals("")) {
        }
        else {
          System.out.println("Unknow Command!!!");
        }
      }
      catch (Exception e) {

      }
      finally {
        if (yymdb.db.getErrorMessage().equals("")) {
          System.out.println("Finish this work!!!");
        }
        else if (yymdb.db.getErrorMessage().indexOf("Index") == -1) {
          System.out.println(yymdb.db.getErrorMessage());
          yymdb.db.setErrorMessageEmpty();
        }
      }
    }
  }
} 

⌨️ 快捷键说明

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