sessionimpl.java

来自「用JAVA实现了,将DB装入内存,内存由DBMS控制,实现简单数据库的创建、数据」· Java 代码 · 共 80 行

JAVA
80
字号
package org.kdb.impl;

import org.kdb.DatabaseManager;
import org.kdb.KdbException;
import org.kdb.Session;
import org.kdb.parser.BaseToken;
import org.kdb.parser.Tokenizer;
import org.kdb.struct.Database;

import java.util.List;

/**

 * Date: 2007-11-20
 * Time: 19:35:22
 */
public class SessionImpl implements Session {
    private DatabaseManager dm = DatabaseManagerImpl.getInstance();

    public int execute(String sql) {
        Tokenizer tokenizer = new Tokenizer(sql);
        try {
            int cmd = BaseToken.getKey(tokenizer.getName());
            switch (cmd) {
                case 1:
                    //todo 执行SELECT

                    return 0;
                case 2:
                    //todo  执行DELETE
                    return 0;
                case 3:
                    //todo   执行INSERT
                    int count = new StatementExecutor(tokenizer, dm).executeInsert();
                    return count;
                case 5:
                    //todo  执行create
                    new StatementExecutor(tokenizer, dm).executeCreate();
                    return 0;
                case 4:
                    //todo 执行Use
                    dm.setCurrentDatabase(tokenizer.getName());
                    return 0;
                case 11:
                    //todo 执行  Desc
                    return 0;
                default:
                    throw new IllegalArgumentException("非法的关键字");


            }
        } catch (KdbException e) {
            e.printStackTrace();
        }

        return 0;
    }

    public List<Object[]> executeQuery(String sql){
        Tokenizer tokenizer = new Tokenizer(sql);
        String str = null;
        try {
            str = tokenizer.getName();
        } catch (KdbException e) {
            e.printStackTrace();
        }
        int cmd = BaseToken.getKey(str);
             if(cmd ==1){
                 return new StatementExecutor(tokenizer,dm).executeQuery();
             }else{
                 System.out.println("查询语句无效");
                 return null;
             }
    }

    public Database getDatabase() {
        return dm.getDatabase();
    }
}

⌨️ 快捷键说明

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