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

📄 xksqlparser.h

📁 简单数据库管理系统
💻 H
字号:
// xkSQLParser.h: interface for the xkSQLParser class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_XKSQLPARSER_H__015C852F_9914_484D_AC4A_31298BEA4EEC__INCLUDED_)
#define AFX_XKSQLPARSER_H__015C852F_9914_484D_AC4A_31298BEA4EEC__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

//外模式--用于和用户交互,为用户提供操作数据库的接口(SQL语言)
//用于SQL语句的词法分析与语法分析
#include "xktype.h"
#include "xkExecEngine.h"
#include "xkInputSource.h"
#include "Vector.h"

class xkSQLParser
{
public:
	xkSQLParser();
	virtual ~xkSQLParser();
	xkSQLParser(xkInputSource* pi_,xkExecEngine* pe_)
		: in_(pi_), engine_(pe_)
	{
	}
	bool Parse();
	Token GetToken();
	char getch()
	{
		assert(in_ != 0);
		return in_->getc();
	}
	char ungetch()
	{
		assert(in_ != 0);
		return in_->ungetc();
	}
//	bool isDigit(const char c_);在C++标准库中都有相应的函数
//	bool isAlpha(const char c_);
//	bool isSpace(const char c_);
	bool isTable(const char* tablename_);
	bool isField(const char* tablename_, const char* fieldname_);
protected:
	bool SelectFunc();
	bool UpdateFunc();
	bool InsertFunc();
	bool DeleteFunc();
	bool CreatetableFunc();
	bool DroptableFunc();
	
	int FindTable(const char* tname_);//return -1 denotes not found
	void DisplayTable(size_t RID_);
private:
	xkExecEngine *engine_;//执行SQL语句的语义
	xkInputSource *in_;//SQL语句输入源
	Vector<char*> identifier_vec_;//存放标识符名
//	Vector<int>  int_vec_;
//	Vector<float> float_vec_;
//	Vector<char[256]> string_vec_;
//	Vector<char*> value_vec_;//存放数值
	Vector<char> char_vec_;//临时值
	char *tablename_;//存放表名
};
#endif // !defined(AFX_XKSQLPARSER_H__015C852F_9914_484D_AC4A_31298BEA4EEC__INCLUDED_)

⌨️ 快捷键说明

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