⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 databasemanagerimpl.java

📁 用JAVA实现了,将DB装入内存,内存由DBMS控制,实现简单数据库的创建、数据表的创建、记录插入、查询以及表的删除。
💻 JAVA
字号:
package org.kdb.impl;

import org.kdb.DatabaseManager;
import org.kdb.KdbException;
import org.kdb.struct.Constant;
import org.kdb.struct.Database;

import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.HashMap;
import java.util.Map;

/**

 * Date: 2007-11-20
 * Time: 19:45:13
 */
public class DatabaseManagerImpl implements DatabaseManager {
    private Map<String, Database> databases = new HashMap<String, Database>();
    private Database currentDatabase = null;
    private static DatabaseManagerImpl instances = new DatabaseManagerImpl();

    private DatabaseManagerImpl() {

    }

    public static DatabaseManagerImpl getInstance() {
        return instances;
    }

    public String createDatabase(String databaseName) {
        String str = this.initDatabase(databaseName);
        return str;
    }

    public Database getDatabase() {
        return currentDatabase;
    }

    public void setCurrentDatabase(String databaseName) {
        this.getDatabases();  //这条语句与下一句有什么区别
        currentDatabase = databases.get(databaseName);
        if (currentDatabase == null) {
                System.out.println("数据库不存在,请先创建数据库");
            return ;
        }
//            try {
//                File f = new File(new File(Constant.DEFALUT_DATABASE_FOLDER), databaseName);
//                if (!f.exists()) {
//                    try {
//                        throw new KdbException("数据库不存在,请先创建数据库");
//                    } catch (KdbException e) {
//                        e.printStackTrace();
//                    }
//                } else {
//                    currentDatabase  = new Database(databaseName);
//                    if(!databases.containsKey(databaseName)){
//                        databases.put(databaseName,currentDatabase);
//                    }
//                }
//            } catch (IOException e) {
//                e.printStackTrace();
//            }

    }

    public Map<String, Database> getDatabases() {
        File f = new File(Constant.DEFALUT_DATABASE_FOLDER);
        if (!f.exists()) {
            f.mkdirs();
        } else {
            File[] files = f.listFiles();
            for (File file : files) {           
                if (file.isDirectory()) {
                    try {
                        databases.put(file.getName(), new Database(file));
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
        return databases;
    }

    public void closeDatabase(String databaseName) {

    }

    private String initDatabase(String databaseName) {
        File f = new File(Constant.DEFALUT_DATABASE_FOLDER);
        if (!f.exists()) {
            f.mkdirs();
        }
        File databaseFolder = new File(f, databaseName);
        if (!databaseFolder.exists()) {
            databaseFolder.mkdirs();
            //创建系统表文件夹
            File sysFolder = new File(databaseFolder, Constant.DEFAULT_SYS_TABLE_FOLDER);
            sysFolder.mkdirs();
            File sysTableFile = new File(sysFolder, Constant.SYS_TABLE_NAME_PRIFIX);
            try {
                sysTableFile.createNewFile();
                RandomAccessFile rfile = new RandomAccessFile(sysTableFile, "rw");
                rfile.writeInt(0);
                rfile.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            //创建用户表文件夹
            File useFolder = new File(databaseFolder, Constant.DEFAULT_USER_TABLE_FOLDER);
            useFolder.mkdirs();
            return "Database " + databaseName + " is created!";
        } else {
            return "Database " + databaseName + " is exists!";
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -