我想分别编写每个表对象及其列而不删除以前的记录

时间:2013-04-13 07:09:04

标签: java file

这是我的表类,其中包含列名称为其数据类型的列,如果是主键,则为bool;这个列列表组合在一起形成一个表。

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

你可以从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;
}

}

1 个答案:

答案 0 :(得分:0)

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

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


  

不,我只是想创建一个数据库文件......这是一个小项目。我只想记录数据库中的表和每个表的列。

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

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

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

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