0

这是我的表类,其中包括 Column 具有 Column name 其数据类型和 bool (如果它不是主键);并且此列列表组合成一个表。

我想通过调用 func public void SaveToFile(){} 来写这个我也尝试过一些东西,但我很困惑如何通过不删除或更改以前的记录来编写它(没有重写);因为我想要一个数据库文件,其中每个表对象及其列由一个行空间分开。

你可以从 viewColumn() 那里得到帮助;func 正常工作。

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;

public class Table 
{
private ArrayList<Column> columns;
private String NAME;
private static int count=0;

public Table() 
{
    columns = new ArrayList<Column>();
    NAME=new String();

    this.NAME="Table"+count;
    count++;
}

public void AddColumn(Column column)
{

    columns.add(column);

}

public void SaveToFile() throws IOException
{
    File f=new File("Database.txt");
    f.createNewFile();
    BufferedReader b =new BufferedReader(new FileReader(f));
    ArrayList<Column> col =new ArrayList<Column>();
    String S =b.readLine();
   // *********************


    //*********************
}

public boolean DeleteColumn(String name)
{
    for (Column c : columns)
    {
        if (c.getname().equals(name)) {return columns.remove(c);}
    }
    return false;
}

public void viewColumns()
{
      System.out.append(NAME+"  ");

    for(Column c: columns)
  {
      System.out.append("\n");
      System.out.append(c.getname()+"  ");
      System.out.append((CharSequence) c.getdatatype()+"  ");

if(c.getPK()==true)
{
    System.out.print(true);
}     

  }
}

public String getNAME() {

    return NAME;
}

}
4

1 回答 1

0

在我看来,您正在尝试使用平面文件实现“数据库”。这不是一个好主意。这不是一个好主意的原因之一是很难更新和删除记录......而不重写整个文件。

我建议您使用真正的数据库(或 SQLite),而不是试图重新发明轮子。


不,我只想创建一个数据库文件……它是一个小项目。我只想记录数据库中有多少表以及每个表的列。

您正在实现的是一个描述数据库的迷你数据库。但是有更好的方法来做到这一点。

  • 将信息存储在真实数据库中的新表中。

  • 您尝试存储的信息已经存在于真实数据库中,并且可以通过 JDBC 元数据 API 获得。使用它而不是复制元数据。

除了在您的小型数据库实现中“重新发明轮子”的问题之外,您当前的方法是创建实际数据库的(冗余)第二个描述,该描述必须(以某种方式)与真实数据库的表结构元数据保持同步.

于 2013-04-13T08:05:54.607 回答