212 lines
6.7 KiB
C++
212 lines
6.7 KiB
C++
//--------------------------------------------------------------------------------
|
|
// = 版权
|
|
// Copyright(c) 2000
|
|
// All rights reserved
|
|
// = 作者(S)
|
|
// 李夫银
|
|
// = 版本
|
|
// Version1.0
|
|
// = 日期
|
|
// 2002.7.20
|
|
// = 修改日志
|
|
//
|
|
//--------------------------------------------------------------------------------
|
|
|
|
#if !defined(AFX_CUIIImpADORXServer_H__4D6F6C94_62E5_4193_9077_F9CCD4076D0F__INCLUDED_)
|
|
#define AFX_CUIIImpADORXServer_H__4D6F6C94_62E5_4193_9077_F9CCD4076D0F__INCLUDED_
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif
|
|
|
|
#ifndef __UIIVALUETABLE_H__
|
|
#include "UIIValueTable.h"
|
|
#endif
|
|
|
|
#ifdef _WIN64
|
|
#import "msado60_Backcompat_x64.tlb" no_namespace rename("EOF", "EndOfFile") rename("EOS", "EndOfStream")
|
|
#else
|
|
#import "C:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace rename("EOF", "EndOfFile") rename("EOS", "EndOfString")
|
|
#endif
|
|
|
|
|
|
#include "UIIADORXServer.h"
|
|
#include <map>
|
|
#include <vector>
|
|
|
|
class CUIIImpADORXServer
|
|
{
|
|
|
|
public:
|
|
CUIIImpADORXServer();
|
|
virtual ~CUIIImpADORXServer();
|
|
|
|
public:
|
|
//建立连接、连接数据库,打开数据库[access本地]
|
|
BOOL InitADOServer(LPCTSTR pszDbFileName);
|
|
|
|
//建立连接、连接数据库,打开数据库
|
|
BOOL InitADOServer(LPCTSTR pszConnection,bool bDisplayException,ConnectOptionEnum OptionEnum = adConnectUnspecified);
|
|
|
|
//建立连接、连接数据库,打开数据库
|
|
BOOL InitADOServer(LPCTSTR pszDSN,LPCTSTR pszUserID,LPCTSTR pszPassword,ConnectModeEnum eMode = adModeUnknown,CursorTypeEnum eCursor = adOpenUnspecified);
|
|
|
|
BOOL GetConnection(CString& sConntion){sConntion = m_sConnection;return m_bSuccessState;}
|
|
|
|
void SetDatabase(LPCTSTR pszDatabase){if (pszDatabase != NULL) m_sDatabase = pszDatabase;}
|
|
|
|
LPCTSTR GetDatabase(){return (LPCTSTR)m_sDatabase;}
|
|
|
|
void AppendAssocDatabase(LPCTSTR pszKey,LPCTSTR pszAssocDb);
|
|
|
|
BOOL AssocDatabase(LPCTSTR pszKey,CString& sAssocDb);
|
|
|
|
//设置登录者的ID
|
|
void SetLoginID(LPCTSTR pszLoginName){ if (pszLoginName != NULL) m_sEmployeeID = pszLoginName;}
|
|
|
|
//获取登录者的ID
|
|
LPCTSTR GetLoginID(){return m_sEmployeeID;}
|
|
|
|
//设置登录的组ID
|
|
void SetGroupID(LPCTSTR pszGroup){ if (pszGroup != NULL) m_sGroupID = pszGroup;}
|
|
|
|
//获取登录的组ID
|
|
LPCTSTR GetGroupID(){return m_sGroupID;}
|
|
|
|
BOOL CreateOLEDBTable(LPCTSTR pszTableName,Ttable& arFields,LPCTSTR pszDbName = _T(""));
|
|
|
|
//创建表及表的字段名
|
|
BOOL CreateSQLSrvTable(LPCTSTR pszTableName,Ttable& arFields,LPCTSTR pszDbName = _T("uii_unknown"));
|
|
|
|
BOOL IsSQLSrvTableExist(LPCTSTR pszTableName,LPCTSTR pszDbName);
|
|
|
|
//获取表的结构信息
|
|
BOOL GetSQLSrvTableStru(LPCTSTR pszTableName,Ttable &arFields,LPCTSTR pszDbName = _T(""));
|
|
|
|
//获取表的结构信息
|
|
BOOL GetSQLSrvTableStru(LPCTSTR pszTableName,CStringList &listField,LPCTSTR pszDbName = _T(""));
|
|
|
|
//获取表的结构信息
|
|
BOOL GetTableStructInfoEx(LPCTSTR pszTableName,Ttable& arFields);
|
|
|
|
//删除数据库中的表
|
|
BOOL DeleteTable(LPCTSTR pszTableName);
|
|
|
|
//删除数据库中的若干表
|
|
BOOL DeleteTable(CStringArray &arTableNames);
|
|
|
|
//删除表中若干字段名
|
|
BOOL DeleteTableFields(LPCTSTR pszTableName,CStringArray &arFields,LPCTSTR pszDbName);
|
|
|
|
//删除表中字段
|
|
BOOL DeleteTableFields(LPCTSTR pszTableName,LPCTSTR pszFields,LPCTSTR pszDbName);
|
|
|
|
//向表中增加若干字段名
|
|
BOOL AppendTableFields(LPCTSTR pszTableName,Ttable &arFields,LPCTSTR pszDbName);
|
|
|
|
//向表中增加字段
|
|
BOOL AppendTableFields(LPCTSTR pszTableName, CUIITableField& arFields,LPCTSTR pszDbName);
|
|
|
|
//获得一个数值
|
|
int GetSelData(LPCTSTR psztrSQL,CString& sValue);
|
|
|
|
//把获得相应的信息填到数组中
|
|
int GetSelData(LPCTSTR psztrSQL,CStringArray &arStrValue);
|
|
|
|
int GetSelData(LPCTSTR psztrSQL,CStringArray &arStrValue,int nFr,int nTo);
|
|
|
|
int GetSelData(LPCTSTR psztrSQL, std::vector<CString> &arStrValue);
|
|
|
|
//是否是空选择集
|
|
BOOL IsSelEmpty(LPCTSTR psztrSQL);
|
|
|
|
//把获得相应的信息填到链表中
|
|
int GetSelData(LPCTSTR psztrSQL,CStringList &listStrValue,BOOL bMakeLower= TRUE);
|
|
|
|
int GetSelData(LPCTSTR psztrSQL,CStringList &listStrValue,int nFr,int nTo,BOOL bMakeLower= TRUE);
|
|
|
|
//选取多个字段,把获得相应的信息填到'表'对象中
|
|
int GetSelData(LPCTSTR psztrSQL,CUIIValueTable &valueTable,BOOL bUpdateLable = TRUE);
|
|
|
|
int GetSelData(LPCTSTR psztrSQL,CUIIValueTable &valueTable,int nFr,int nTo,BOOL bUpdateLable = TRUE);
|
|
|
|
//选取一个作为Key,和一个作为Value的SQL,取的记录添到map中
|
|
int GetSelData(LPCTSTR pszKey_ValueSQL,CMapStringToString &mapKey_Value);
|
|
int GetSelData(LPCTSTR pszKey_ValueSQL, std::map<CString, CString> &mapKey_Value);
|
|
|
|
//选取一行,获得Field到对应数据的映射
|
|
int GetSelDataEx(LPCTSTR pszSelectSQL,CMapStringToString &mapFieldToValue);
|
|
int GetSelDataEx(LPCTSTR pszSelectSQL, std::map<CString, CString> &mapFieldToValue);
|
|
int GetSelDataEx(LPCTSTR pszSelectSQL, std::vector<std::vector<CString>>& datas);
|
|
int GetSelDataEx(LPCTSTR pszSelectSQL, std::vector<std::map<CString, CString>>& datas);
|
|
|
|
//把获得相应的信息填到vResults中
|
|
int GetSelData(LPCTSTR psztrSQL,_variant_t &vResults,long &lAdoRow,long &lAdoCol);
|
|
|
|
//获得数据库中所有的表名
|
|
void GetSQLSrvTableNames(CStringList &listTables,LPCTSTR pszDbName);
|
|
|
|
//获得数据库中所有的表名
|
|
void GetSQLSrvTableNames(CStringArray &arTables,LPCTSTR pszDbName);
|
|
|
|
//获得数据库中所有的表名
|
|
void GetTableNameArray(CStringArray &arTables,LPCTSTR pszTableType = _T("TABLE"));
|
|
|
|
//获得数据库中所有的表名
|
|
void GetOLDBTableNameList(CStringList &listTables,LPCTSTR pszTableType = _T("TABLE"));
|
|
|
|
//获得数据库中所有的表名
|
|
void GetOLDBTableNameArray(CStringArray &arTables,LPCTSTR pszTableType = _T("TABLE"));
|
|
|
|
//blob 操作
|
|
//insert into table (id,name,picture) values (0,'namestr',?)
|
|
//table 对应 id,name 的数据
|
|
int InsertBlob(LPCTSTR pszSQL,void* pData,int nSize);
|
|
int InsertBlob(LPCTSTR pszSQL,LPCTSTR pszFile);
|
|
|
|
//update table set id=,name='namestr',picture=? where ...
|
|
int UpdateBlob(LPCTSTR pszSQL,void* pData,int nSize);
|
|
int UpdateBlob(LPCTSTR pszSQL,LPCTSTR pszFile);
|
|
|
|
//select picture from table where id=...
|
|
int GetSelBlob(LPCTSTR pszSQL,void*& pData,int& nSize);
|
|
int GetSelBlob(LPCTSTR pszSQL,LPCTSTR pszFilePath);
|
|
|
|
//执行SQL语句[如 删除,追加,更新]
|
|
BOOL ExecuteSQL(LPCTSTR psztrSQL);
|
|
|
|
//判断数据库是否成功打开
|
|
BOOL IsDatabaseOpen();
|
|
|
|
public:
|
|
//取得连接数据库指针
|
|
_ConnectionPtr GetConnectionPtr();
|
|
|
|
void FromConnectionPtr(_ConnectionPtr pConPtr);
|
|
|
|
//出错显示
|
|
void DisplayADOException(_com_error &e,bool bDisplay = false);
|
|
|
|
CString GetFieldType(int propType);
|
|
|
|
int ConverToSQLType(LPCTSTR pszType,int nDefSize,CString& sSQLType);
|
|
|
|
private:
|
|
|
|
//关闭连接及数据库
|
|
void CloseAll();
|
|
|
|
private:
|
|
|
|
BOOL m_bSuccessState; //连接及数据库打开成功状态
|
|
_ConnectionPtr m_ConPtr; //连接指针
|
|
CString m_sConnection;
|
|
|
|
CString m_sEmployeeID; //连结系统的真实登录者
|
|
CString m_sGroupID; //连结系统的登录者的组
|
|
CString m_sDatabase; //数据库名
|
|
CMapStringToString m_mapAssocDb; //关联数据库
|
|
};
|
|
|
|
#endif
|