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

📄 sqldefine.h

📁 ADO查看数据库工具的原码
💻 H
字号:
// SqlDefine.h: interface for the CSqlDefine class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_SQLDEFINE_H__35FA3F22_8323_4EC8_96D6_67858743B8B9__INCLUDED_)
#define AFX_SQLDEFINE_H__35FA3F22_8323_4EC8_96D6_67858743B8B9__INCLUDED_

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

class CSqlDefine  
{
public:
	int CleanOptions(BOOL bCleanLock);
	int CheckSql(); //检查SQL语句构造是否合法
	int CreateSql(); //根据输入建立SQL语句
	CString GetTableName(); //获取该语句操作的表名
	CString GetSqlGroupStr();//获取语句中用于分组的部分
	CString GetSqlWhereStr();//获取语句中条件部分
	CString GetSqlHavingStr();//获取语句中过滤部分
	CString GetSqlOrderStr();//获取语句中排序部分
	CString GetSqlDelStr(); //获取删除记录的sql语句
	CString GetSqlSelStr();//获取查询记录的SQL语句
struct TagSqlDef{		//SQL语句结构
	long	nType;				//分节类型
	long	nSubType;			//操作类型	或操作(OPER_TYPE_OR+OPER_EQUAL)
	long	nGroup;				//条件分组
	char	cStr[64];			//类型字符串
	BOOL	bLock;				//是否锁定
	char    cStrVal[64];			//条件
	int     bres;				//位操作比较结果
};

enum euOptionOperator
{
	OPER_NONE=0,			//直接使用原字符串做条件
	OPER_EQUAL=1,			//等于
	OPER_GREAT=2,			//大于
	OPER_LESS=3,			//小于
	OPER_GREAT_EQUAL=4,		//大于且等于
	OPER_LESS_EQUAL=5,		//小于且等于
	OPER_LIKE=6,			//相似
	OPER_NOT_EQUAL=7,		//不等于
	OPER_BIT_AND_NEQUAL=8,	//字位与运算, 结果不等于, & 
	OPER_BIT_AND_EQUAL=9,	//字位与运算, 结果等于, &
	OPER_TYPE_OR=1000,		//与其他条件或操作
};

enum euSqlType
{
	SQL_NORMAL_COLS	=1,
	SQL_COUNT_COLS	=2,
	SQL_TABLES		=3,
	SQL_UPDATE_COLS	=4,
	SQL_DELETE		=5,
	SQL_WHERE		=6,
	SQL_GROUPBY		=7,
	SQL_HAVING		=8,
	SQL_ORDERBY		=9,
};

	/*增加过滤条件 
	*	pStrName	字段名
	*	pStrValue	字段条件的值  按需要自己加单引号 
	*	nOper		操作类型
	*	bres		位操作比较结果
	*	bLock       是否锁定
	//	对条件进行分组处理 默认是与操作 使用AddWhereOption("", "",OPER_TYPE_OR,0);可以让各组语句进行或操作
	//	分组默认只有nGroupID=1 的一组
	//  每组内各条件间 默认是与操作 设置组中第一个条件的操作类型为 OPER_TYPE_OR+nOper 就能够改变组内的操作为或操作
	*/
	int AddHavingOption(char *pStrName, char* pStrValue, int nOper = OPER_EQUAL, int bres=1 , bool bLock = false);
	//增加查询条件 
	int AddWhereOption(char *pStrName, char* pStrValue, int nOper = OPER_EQUAL, int nGroupID=1,int bres=1 , bool bLock = false);
	//设置SQL语句的其他部分(euSqlType中SQL_WHERE和SQL_HAVING以外的
	int AddSqlOption(char *pStr, int nType, bool bLock=false);
	int DefNewBuf(int nMaxLength);
	void SetSqlLikeKey(char cKey) { m_SqlLike=cKey; };
	CSqlDefine();
	virtual ~CSqlDefine();
private:
	CString CreateDelSql();
	CString CreatSqlOption(int index);
	CString CreateSqlOrderby();
	CString CreateSqlHaving();
	CString CreateSelSql();
	CString CreateSqlGroupby();
	CString CreateSqlWhere();
	CString CreateGroupSql(int nGroup);

	TagSqlDef *m_SqlDefine;
	char m_SqlLike;
	int m_nCurOption;
	int m_nMaxOption;

	CString m_strSqlSel;
	CString m_strSqlDel;
	CString m_strSqlWhere;
	CString m_strSqlGroupby;
	CString m_strSqlOrderby;
	CString m_strSqlHaving;
	CString m_strTableName;
};

#endif // !defined(AFX_SQLDEFINE_H__35FA3F22_8323_4EC8_96D6_67858743B8B9__INCLUDED_)

⌨️ 快捷键说明

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