资源简介
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 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个文件信息
- 上一篇:Android图片涂鸦源码
- 下一篇:数据库管理系统java实现
相关资源
- 微博系统(Java源码,servlet+jsp),适
- java串口通信全套完整代码-导入eclip
- jsonarray所必需的6个jar包.rar
- 三角网构TIN生成算法,Java语言实现
- java代码编写将excel数据导入到mysql数据
- Java写的cmm词法分析器源代码及javacc学
- JAVA JSP公司财务管理系统 源代码 论文
- JSP+MYSQL旅行社管理信息系统
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
- java做的房产管理系统
- 基于jsp的bbs论坛 非常详细
评论
共有 条评论