📄 getdatabase.h
字号:
// DatabaseAccess.h: interface for the CDatabaseAccess class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_DATABASEACCESS_H__19163588_441F_4B21_B354_877412B2B46A__INCLUDED_)
#define AFX_DATABASEACCESS_H__19163588_441F_4B21_B354_877412B2B46A__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <Afxtempl.h>
// 描述_ParameterPtr对象信息的结构
typedef struct tagParameterInfo{ // 参数信息
_bstr_t Name; // 参数名字
enum DataTypeEnum Type; // 参数类型
enum ParameterDirectionEnum Direction; // 参数方向(输入、输出)
long Size; // 参数尺寸
_variant_t Value; // 参数值。
}PARAMETERINFO, *PPARAMETERINFO;
// 使用前在StdAfx.h中加入#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "adoEOF")
// 访问数据库前先用::CoInitialize(NULL)初始化COM环境。
// 程序退出时使用::CoUninitialize()释放资源。
class CDatabaseAccess
{
private:
bool m_bIsOracle; //ORACLE与SQLServer切换标志。默认是ORACLE数据库
_ConnectionPtr m_pCon; //连接对象
public:
int GetRecordSetCount(_RecordsetPtr m);
//连接本地数据库(无密码)
BOOL ConnectDB(char *DatabaseName);
//连接本地数据库(有密码) 通过ODBC方式连接
BOOL ConnectDB(const char *DatabaseName,char *PassWord);
CDatabaseAccess();
virtual ~CDatabaseAccess();
// 连接到数据库服务器,DSN方式 1成功 0失败
BOOL ConnectDB(char *pcDSNName,char *pcUserName,char *pcUserPassword);
// 连接到数据库服务器,需要IP,端口和Oracle全局数据库名或SID的连接方式。1成功 0失败.
BOOL ConnectDB(const char *pcUserName ,const char *pcUserPassword ,const char *pcServerIP ,const char *pcServerPort="1024" ,const char *pcConnectServiceName = "MFD");
//关闭与数据库的连接
void CloseConnect();
//设置数据库类型(ORACLE与SQLServer)
void SetDatabaseType(bool bIsOracle=true);
// 执行存储过程(普通存储过程,即非包中的),非零-正确执行;0-参数个数为负数。
BOOL ExecuteProcedure(const char *pcProcedureName , PARAMETERINFO aPrameterInfo[],BYTE bCount);
// 执行存储过程返回记录集的地址。在此函数中使用约定包名:mfd_callpkg。字段列表用"逗号"隔开如:"empid,empname"。
_RecordsetPtr *CDatabaseAccess::ExecProGetRecordset(const char *pcProcedureName , PARAMETERINFO aParameterInfo[] , BYTE bParametersCount , const char *pcFieldsList , const char *pcPackageName = "mfd_callpkg");
// 无参数的存储过程(普通存储过程,非包中)。
_RecordsetPtr *CDatabaseAccess::ExecProGetRecordset(const char *pcProcedureName);
// 无参数的存储过程
_RecordsetPtr *CDatabaseAccess::ExecProGetRecordset(const char *pcProcedureName , const char *pcFieldsList);
// 执行SQL语句
_RecordsetPtr *ExecuteSQLSentence( const char *pcSentence);
};
#endif // !defined(AFX_DATABASEACCESS_H__19163588_441F_4B21_B354_877412B2B46A__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -