这是我的表类,其中包含列名称为其数据类型的列,如果是主键,则为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;
}
}
答案 0 :(得分:0)
在我看来,您正在尝试使用平面文件实现“数据库”。这不是一个好主意。并不是一个好主意的原因之一是很难更新和删除记录......而不重写整个文件。
我建议您使用真正的数据库(或SQLite),而不是尝试重新发明轮子。
不,我只是想创建一个数据库文件......这是一个小项目。我只想记录数据库中的表和每个表的列。
您正在实施的是描述数据库的迷你数据库。但是有更好的方法可以做到这一点。
将信息存储在真实数据库的新表中。
您尝试存储的信息已存在于真实数据库中,可通过JDBC元数据API获取。使用它而不是复制元数据。
除了迷你数据库实现中“重新发明轮子”的问题之外,您当前的方法是创建实际数据库的(冗余)第二个描述,必须(以某种方式)与真实数据库保持同步表结构元数据。