資源簡介
Java實現(xiàn)數(shù)據(jù)庫管理系統(tǒng),可以通過控制臺進行sql語句實現(xiàn),用文件存儲,用到了B+樹和hash,用到了java的序列化和反序列化,對象流。

代碼片段和文件信息
package?com.zhangyujie.db;
import?java.io.BufferedReader;
import?java.io.File;
import?java.io.FileInputStream;
import?java.io.FileOutputStream;
import?java.io.InputStreamReader;
import?java.io.OutputStreamWriter;
import?java.io.PrintWriter;
import?java.util.List;
public?class?Alter?implements?Operate?{
private?Table?table?=?null;
private?String?tableName;//?待操作的表名
private?boolean?isAdd;//?true表示add操作,false表示drop操作
private?List?fields?=?null;//?待操作的屬性列表
private?String?account?=?null;
public?Alter(String?account)?{
this.account?=?account;
}
@Override
public?void?start()?throws?Exception?{
ParseAccount.parseAlter(this);//?解析alter語句(操作所涉及的表名和操作類型)
this.table?=?OperUtil.loadTable(this.tableName);//?加載操作所涉及的關(guān)系表
ParseAccount.parseAlterAddAndDrop(this);//?解析alter-add&alter-drop操作
if?(this.isAdd)?{
this.alterAdd();//?執(zhí)行alter-add操作
System.out.println(“增加屬性成功!“);
}?else?{
this.alterDrop();//?執(zhí)行alter-drop操作
System.out.println(“刪除屬性成功!“);
}
OperUtil.perpetuateTable(this.table?this.table.getConfigFile());//?將修改后的表結(jié)構(gòu)持久化
}
/**
?*?alter-add!!!!
?*?
?*?@param?table
?*?@param?alter
?*?@throws?Exception
?*/
private?void?alterAdd()?throws?Exception?{
Table?table?=?this.getTable();
if?(Check.isRepeated(table.getAttributes()?this.getFields()))?{
throw?new?RuntimeException(“添加屬性與已有屬性名重復(fù)!“);
}
BufferedReader?br?=?null;
PrintWriter?pw?=?null;
String?parentPath?=?table.getFile().getParent();
File?temp?=?new?File(parentPath?+?File.separator?+?“temp“);
if?(temp.exists())?{
temp.delete();
}
table.getFile().renameTo(temp);
table.setFile(new?File(parentPath?+?File.separator?+?table.getTableName()));
try?{
br?=?new?BufferedReader(new?InputStreamReader(new?FileInputStream(temp)?“GBK“));
pw?=?new?PrintWriter(new?OutputStreamWriter(new?FileOutputStream(table.getFile())?“GBK“));
String?line?=?null;
String?add?=?““;
for?(int?i?=?0;?i? add?+=?“null“;
}
while?((line?=?br.readLine())?!=?null)?{
line?+=?add;
pw.println(line);
}
}?catch?(Exception?e)?{
e.printStackTrace();
return;
}?finally?{
try?{
if?(br?!=?null)?{
br.close();
temp.delete();
}
if?(pw?!=?null)?{
pw.close();
}
}?catch?(Exception?e)?{
e.printStackTrace();
}
}
table.getAttributes().addAll(this.getFields());
}
/**
?*?alter-drop!!!
?*?
?*?@param?table
?*?@param?alter
?*/
private?void?alterDrop()?{
Table?table?=?this.getTable();
BufferedReader?br?=?null;
PrintWriter?pw?=?null;
String?parentPath?=?table.getFile().getParent();
File?temp?=?new?File(parentPath?+?File.separator?+?“temp“);
if?(temp.exists())?{
temp.delete();
}
table.getFile().renameTo(temp);
table.setFile(new?File(parentPath?+?File.separator?+?table.getTableName()));
try?{
br?=?new?BufferedReader(new?I
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-10-20?19:16??Databa
?????目錄???????????0??2017-10-22?21:33??Databa
?????文件????????6148??2017-10-22?21:33??Databa
?????目錄???????????0??2017-10-23?10:25??__MACOSX\
?????目錄???????????0??2017-10-23?10:25??__MACOSX\Databa
?????目錄???????????0??2017-10-23?10:25??__MACOSX\Databa
?????文件?????????120??2017-10-22?21:33??__MACOSX\Databa
?????文件?????????373??2017-04-30?12:10??Databa
?????文件?????????231??2017-04-30?12:10??__MACOSX\Databa
?????目錄???????????0??2017-04-30?13:54??Databa
?????文件?????????521??2017-04-30?02:48??Databa
?????目錄???????????0??2017-10-23?10:25??__MACOSX\Databa
?????文件?????????175??2017-04-30?02:48??__MACOSX\Databa
?????文件??????165640??2017-04-30?12:05??Databa
?????文件?????????175??2017-04-30?12:05??__MACOSX\Databa
?????文件??????????70??2017-04-29?15:56??Databa
?????文件?????????175??2017-04-29?15:56??__MACOSX\Databa
?????文件?????????194??2017-04-30?13:23??Databa
?????文件?????????175??2017-04-30?13:23??__MACOSX\Databa
?????文件???????57341??2017-04-30?12:17??Databa
?????文件?????????175??2017-04-30?12:17??__MACOSX\Databa
?????文件?????????529??2017-04-29?15:56??Databa
?????文件?????????175??2017-04-29?15:56??__MACOSX\Databa
?????文件?????????539??2017-04-29?15:57??Databa
?????文件?????????175??2017-04-29?15:57??__MACOSX\Databa
?????文件?????????571??2017-04-30?12:47??Databa
?????文件?????????231??2017-04-30?12:47??__MACOSX\Databa
?????文件?????????497??2017-04-30?12:10??Databa
?????文件?????????175??2017-04-30?12:10??__MACOSX\Databa
?????文件?????????207??2017-04-30?12:48??Databa
?????文件?????????175??2017-04-30?12:48??__MACOSX\Databa
............此處省略217個文件信息
評論
共有 條評論