• 大小: 329KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-08
  • 语言: Java
  • 标签: java  DBMS  

资源简介

Java实现数据库管理系统,可以通过控制台进行sql语句实现,用文件存储,用到了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);// 加载操作所涉及的关系表
ParseAccount.parseAlterAddAndDrop(this);// 解析alter-add&alter-drop操作
if (this.isAdd) {
this.alterAdd();// 执行alter-add操作
System.out.println(“增加属性成功!“);
} else {
this.alterDrop();// 执行alter-drop操作
System.out.println(“删除属性成功!“);
}
OperUtil.perpetuateTable(this.table this.table.getConfigFile());// 将修改后的表结构持久化
}

/**
 * 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(“添加属性与已有属性名重复!“);
}
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 < this.getFields().size(); 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  Database2.5.Release\
     目录           0  2017-10-22 21:33  Database2.5.Release\database\
     文件        6148  2017-10-22 21:33  Database2.5.Release\database\.DS_Store
     目录           0  2017-10-23 10:25  __MACOSX\
     目录           0  2017-10-23 10:25  __MACOSX\Database2.5.Release\
     目录           0  2017-10-23 10:25  __MACOSX\Database2.5.Release\database\
     文件         120  2017-10-22 21:33  __MACOSX\Database2.5.Release\database\._.DS_Store
     文件         373  2017-04-30 12:10  Database2.5.Release\database\test1.config
     文件         231  2017-04-30 12:10  __MACOSX\Database2.5.Release\database\._test1.config
     目录           0  2017-04-30 13:54  Database2.5.Release\database\test1\
     文件         521  2017-04-30 02:48  Database2.5.Release\database\test1\unrepatedIndex.config
     目录           0  2017-10-23 10:25  __MACOSX\Database2.5.Release\database\test1\
     文件         175  2017-04-30 02:48  __MACOSX\Database2.5.Release\database\test1\._unrepatedIndex.config
     文件      165640  2017-04-30 12:05  Database2.5.Release\database\test1\unrepatedIndex
     文件         175  2017-04-30 12:05  __MACOSX\Database2.5.Release\database\test1\._unrepatedIndex
     文件          70  2017-04-29 15:56  Database2.5.Release\database\test1\person
     文件         175  2017-04-29 15:56  __MACOSX\Database2.5.Release\database\test1\._person
     文件         194  2017-04-30 13:23  Database2.5.Release\database\test1\salary
     文件         175  2017-04-30 13:23  __MACOSX\Database2.5.Release\database\test1\._salary
     文件       57341  2017-04-30 12:17  Database2.5.Release\database\test1\index1
     文件         175  2017-04-30 12:17  __MACOSX\Database2.5.Release\database\test1\._index1
     文件         529  2017-04-29 15:56  Database2.5.Release\database\test1\person.config
     文件         175  2017-04-29 15:56  __MACOSX\Database2.5.Release\database\test1\._person.config
     文件         539  2017-04-29 15:57  Database2.5.Release\database\test1\salary.config
     文件         175  2017-04-29 15:57  __MACOSX\Database2.5.Release\database\test1\._salary.config
     文件         571  2017-04-30 12:47  Database2.5.Release\database\test1\employee.config
     文件         231  2017-04-30 12:47  __MACOSX\Database2.5.Release\database\test1\._employee.config
     文件         497  2017-04-30 12:10  Database2.5.Release\database\test1\index1.config
     文件         175  2017-04-30 12:10  __MACOSX\Database2.5.Release\database\test1\._index1.config
     文件         207  2017-04-30 12:48  Database2.5.Release\database\test1\employee
     文件         175  2017-04-30 12:48  __MACOSX\Database2.5.Release\database\test1\._employee
............此处省略217个文件信息

评论

共有 条评论