ADO类

为了方便的操作ADO,这里提供4个类:CADODatabase,CADORecordset,CADOParameter,CADOCommand ,下面对类的成员作一介绍。
B.1 CADODatabase类函数介绍
CADODatabase类包含关于_ConnectionPtr的函数集合。
// 打开一个数据库连接
BOOL CADODatabase::Open
(
LPCTSTR lpstrConnection = _T("");//连接字符串
)
示例:
// 访问SQL Server示例
CADODatabase pAdoDb;
CString strConnection = _T("");
strConnection = _T("Provider=MSDASQL;PersistSecurityInfo=False;"
                   "Trusted_Connection=Yes;"
                   "Data Source=Access Sql Server;catalog=sampledb");
pAdoDb.SetConnectionString(strConnection);
if(pAdoDb.Open())
DoSomething();

// 访问Access示例
CADODatabase pAdoDb;
CString strConnection = _T("");
strConnection = _T("Provider=Microsoft.Jet.OLEDB.4.0;"
              "Data Source=C:\\VCProjects\\ADO\\Test\\dbTest.mdb");
pAdoDb.SetConnectionString(strConnection);
if(pAdoDb.Open())
DoSomething();

// 对打开的数据库执行SQL语句
BOOL CADODatabase::Execute
(
LPCTSTR lpstrExec //执行字符串
)
示例:
CADODatabase pAdoDb;
CString strConnection = _T("");
strConnection = _T("Provider=MSDASQL;" "PersistSecurityInfo=False;" "Trusted_Connection=Yes"
                "Data Source=Access Sql Server;catalog=sampledb");
if(pAdoDb.Open(strConnection))
pAdoDb.Execute("Delete From tblClients Where Cheker = 3");

// 返回最后一条SQL语句影响的记录数目
int CADODatabase::GetRecordsAffected()

// 返回活动的连接
_ConnectionPtr CADODatabase::GetActiveConnection()

// 返回查询中影响的记录数目
DWORD CADODatabase::GetRecordCount
(
_RecordsetPtr m_pRs //记录集
)

// 提交一个事务
long CADODatabase::BeginTransaction()

// 结束目前的事务并且恢复所有数据库回到事务开始时的状态
long CADODatabase::RollbackTransaction()

// 数据库是否打开
BOOL CADODatabase::IsOpen()

// 关闭目前的数据库连接
void CADODatabase::Close()

// 插入连接字符串
void CADODatabase::SetConnectionString
(
LPCTSTR lpstrConnection) //连接字符串
)

// 返回连接字符串
CString CADODatabase::GetConnectionString()

// 得到最后一次错误的代码
DWORD CADODatabase::GetLastError()

// 返回最后一次的错误字符串
CString CADODatabase::GetLastErrorString()
B.2 CADORecordset类函数介绍
CADORecordset类包含关于_RecordsetPtr的函数集合。
// 打开一个记录集
BOOL CADORecordset::Open
(
_ConnectionPtr mpdb, // 连接指针
LPCTSTR lpstrExec = _T(""), // 包含SQL选择状态的字符串指针
int nOption = CADORecordset::openUnknown //定义接近模式
// 包含 CADORecordset::openUnknown
// 包含 CADORecordset::openQuery
// 包含 CADORecordset::openTable
// 包含 CADORecordset::openStoredProc
)
BOOL CADORecordset::Open
(
LPCTSTR lpstrExec = _T(""), 
int nOption = CADORecordset::openUnknown
)

// 执行记录集
BOOL CADORecordset::Execute
(
CADOCommand* pCommand // CADOCommand指针
)

// 返回查询字符串
CString CADORecordset::GetQuery

// 设置查询字符串
void CADORecordset::SetQuery
(
LPCSTR strQuery // 查询字符串
)

// 返回记录集的记录数
DWORD CADORecordset::GetRecordCount()

// 判断记录集是否打开
BOOL CADORecordset::IsOpen()

// 关闭记录集
void CADORecordset::Close()

// 返回记录集中的字段数目
long CADORecordset::GetFieldCount()

// 返回某字段的值
BOOL CADORecordset::GetFieldValue

// 某字段是否为NULL
BOOL CADORecordset::IsFieldNull
(
LPCTSTR lpFieldName // 字段名字
)
BOOL CADORecordset::IsFieldNull
(
int nIndex // 字段索引
)

// 某字段是否为空
BOOL CADORecordset::IsFieldEmpty
(
LPCTSTR lpFieldName // 字段名字
)
BOOL CADORecordset::IsFieldEmpty
(
int nIndex // 字段索引
)

// 判断记录集当前位置是否没记录
BOOL CADORecordset::IsEof()

// 判断是否在记录集的顶部
BOOL CADORecordset::IsBof()

// 移动记录
void CADORecordset::MoveFirst
void CADORecordset::MoveNext
void CADORecordset::MovePrevious
void CADORecordset::MoveLast
// 得到和指定目前记录在哪一页
long CADORecordset::GetAbsolutePage()
void CADORecordset::SetAbsolutePage
(
int nPage //从1开始的页数
)

// 返回记录集页数
long CADORecordset::GetPageCount()

// 设置每页记录的数目
long CADORecordset::GetPageSize()
void CADORecordset::SetPageSize
(
int nSize //记录数目
)
示例:
CADORecordset pRs(&pDb);
if(pRs.Open("MyBigTable", CADORecordset::openTable))
{
pRs.SetPageSize(5);
    for(register int nPageIndex = 1; nPageIndex <= pRs.GetPageCount(); 
        nPageIndex++)
    {
        pRs.SetAbsolutePage(nPageIndex);
        for(register int nRecNumber = 0; nRecNumber < pRs.GetPageSize(); 
            nRecNumber++)
        {
            long lVal;
            pRs.GetFieldValue("ID", lVal);
            pRs.MoveNext();
            if(pRs.IsEof())
                break;
        }
    }
    pRs.Close();
}

// 指示记录集中记录的位置
long CADORecordset::GetAbsolutePosition()
void CADORecordset::SetAbsolutePosition
(
int nPosition //记录集中移动到的位置
)

// 返回字段的属性
BOOL CADORecordset::GetFieldInfo
(
LPCTSTR lpFieldName, // 字段名字
CAdoFieldInfo* fldInfo // 信息结构
)
BOOL CADORecordset::GetFieldInfo
(
int nIndex,   // 字段索引
CAdoFieldInfo* fldInfo
)
struct CADOFieldInfo
{
    char m_strName[30];
    short m_nType;
    long m_lSize;
    long m_lDefinedSize;
    long m_lAttributes;
    short m_nOrdinalPosition;
    BOOL m_bRequired;
    BOOL m_bAllowZeroLength;
    long m_lCollatingOrder;
};
示例:
CADORecordset prs(&m_pDb);
if(prs.Open("Clients", CADORecordset::openTable))
{
    CADOFieldInfo pInfo;
    prs.GetFieldInfo("Description", &pInfo);
    if(pInfo.m_nType == CADORecordset::typeVarChar)
        AfxMessageBox("The type Description Field Is VarChar");
}
if(prs.Open("TestTable", CADORecordset::openTable))
{
    CADOFieldInfo* fInfo = new CADOFieldInfo;
    prs.GetFieldInfo(0, fInfo);
    CString strFieldName = fInfo->m_strName;
    prs.Close();
}

// 返回大数据字段对象
BOOL CADORecordset::GetChunk
(
LPCTSTR lpFieldName, //字段名字 
CString& strValue //包含字符串数据指针
)
BOOL CADORecordset::GetChunk
(
int nIndex,  //字段索引
CString& strValue
)
BOOL CADORecordset::GetChunk
(
LPCTSTR lpFieldName, 
LPVOID pData  //包含对象数据指针
)
BOOL CADORecordset::GetChunk
(
int nIndex, 
LPVOID pData
)

// 将数据附加到字符和二进制字段对象上
BOOL CADORecordset::AppendChunk
(
LPCTSTR lpFieldName, //字段名字
LPVOID lpData, //数据对象
UINT nBytes //插入的数据大小
)
BOOL CADORecordset::AppendChunk
(
int nIndex, //字段索引
LPVOID lpData, 
UINT nBytes
)
示例:
// Sample of AppendChunck
prs.AddNew();
prs.SetFieldValue("ID", 5);
prs.SetFieldValue("Description", "Client 05");
prs.SetFieldValue("Checker", 1);
prs.AppendChunk("Document", "This Document is the story of Bob and his Friends...", 37);
prs.Update();
// Sample of GetChunck
char data[1024];
prs.GetChunk("Document", (LPVOID)&data);

// 将记录集作为字符串返回
CString CADORecordset::GetString
(
LPCTSTR lpCols, // 列分割符
LPCTSTR lpRows, // 行分隔符
LPCTSTR lpNull, // 表达一个NULL值
long numRows = 0 // 影响的行数目
)

// 返回最后一个错误代码
DWORD CADORecordset::GetLastError()

// 返回最后一个错误字符串
CString CADORecordset::GetLastErrorString()

// 在打开的记录集增加一条记录
BOOL CADORecordset::AddNew()

// 允许修改一条记录
void CADORecordset::Edit()

// 删除当前的记录
BOOL CADORecordset::Delete()

// 更新当前记录中的更新操作
BOOL CADORecordset::Update()

// 取消当前更新操作
void CADORecordset::CancelUpdate()

// 设置字段值
BOOL CADORecordset::SetFieldValue
示例:
CADORecordset prs(&m_pAdoDb);
prs.Open("Test", openTable);
prs.AddNew();
prs.SetFieldValue(0, "dataU");
prs.SetFieldValue(1, "data01");
prs.SetFieldValue(2, (long)51000);
COleDateTime time = COleDateTime(2001,6,15, 10, 8, 30);
prs.SetFieldValue(3, time);
prs.Update();

// 定位字符串
BOOL CADORecordset::Find
(
LPCTSTR lpFind, // 用来定位记录的字符串
int nSearchDirection // 查找方向
// CADORecordset::searchForward  向前
// CADORecordset::searchBackward 向后
)
示例:
if(prs.Find("Field0 LIKE 'dataU%'"))
{
prs.Delete();
while(prs.FindNext())
prs.Delete();
}

// 定位字符串
BOOL CADORecordset::FindFirst
(
LPCTSTR lpFind //用来定位记录的字符串
)

// 从上一位置开始查找字符串
BOOL CADORecordset::FindNext()

// 存储当前记录位置
BOOL CADORecordset::GetBookmark()

// 返回存储的记录位置
void CADORecordset::SetBookmark()

// 设置数据滤波器
BOOL CADORecordset::SetFilter
(
LPCTSTR strFilter //用多个与或连接的字符串
)
示例:
CADORecordset m_pRs;
m_pRs = CADORecordset(&m_pDb);
if(m_pRs.Open("tblTest", CADORecordset::openTable))
{
    CString strFilter = _T("LastName = 'Smith' And Age > 30");
    m_pRs.SetFilter(strFilter);
    m_pRs.Close();
}

// 设置记录集的排队顺序
BOOL CADORecordset::SetSort
(
LPCTSTR lpstrCriteria //SQL顺序字符串
)

// 返回打开记录集的指针
_RecordsetPtr CADORecordset::GetRecordset()

//复制CADORecordset对象
BOOL CADORecordset::Clone
(
CADORecordset pAdoRecordset //现存的CADORecordset对象
)
示例:
CADORecordset m_pRs; //Original Recordset
CADORecordset RS;   //Duplicate Recordset
m_pRs = CADORecordset(&m_pDb);
if(m_pRs.Open("tblTest", CADORecordset::openTable)) //Open the Original 
Recordset
{
    m_pRs.Clone(RS); //Create the clone of the original Recordset
    long lClonRecs = RS.GetRecordCount();
    long lOrigRecs = m_pRs.GetRecordCount();
    RS.Close();
    m_pRs.Close();
}

//存储记录集到XML文件
BOOL CADORecordset::SaveAsXML
(
LPCTSTR lpstrXMLFile //文件位置
)

//打开XML文件
BOOL CADORecordset::OpenXML
(
LPCTSTR lpstrXMLFile //文件位置
)
示例:
CADORecordset pRs;
if(prs.OpenXML("C:\\My.XML"))
{
    CString strClient = _T("");
    double dblVal = 0;
    long lrecs = prs.GetRecordCount();
    if(!prs.IsEof())
        prs.MoveFirst();
    prs.GetFieldValue("Budget", dblVal);
    prs.GetFieldValue("ClientName", strClient);
    prs.Close();
}

B.3 CADOParameter类函数介绍
CADOParameter类包含关于_ParameterPtr的函数集合。
// 构造函数
CADOParameter::CADOParameter
(
int nType,  //明确CADOParameter对象的数据类型
long lSize = 0,  //明确参数值的最大长度
int nDirection = paramInput, //明确CADOParameter对象的方向
// CADOParameter::paramUnknown 参数方向未知
// CADOParameter::paramInput  表示输入参数
// CADOParameter::paramOutput 表示输出参数
// CADOParameter::paramInputOutput 表示输入输出参数
// CADOParameter::paramReturnValue  表示返回值         
CString strName = _T("") // CADOParameter对象的名字
)

//设置CADOParameter对象值
BOOL CADOParameter::SetValue
(
int nValue //整型
)
BOOL CADOParameter::SetValue
(
long lValue //长整型
)
BOOL CADOParameter::SetValue
(
double dbValue //双精度型
)
BOOL CADOParameter::SetValue
(
CString strValue //字符串型
)
BOOL CADOParameter::SetValue
(
COleDateTime time //时间型
)
BOOL CADOParameter::SetValue
(
_variant_t vtValue //可变换型
)

// 设置CADOParameter对象的尺度
void CADOParameter::SetPrecision
(
int nPrecision //尺度
)

// 设置CADOParameter对象的精度
void CADOParameter::SetPrecision
(
int nPrecision //精度
)

// 返回CADOParameter对象的值
BOOL CADOParameter::GetValue
(
int& nValue //整型
)
BOOL CADOParameter::GetValue
(
long& lValue  //长整型
)
BOOL CADOParameter::GetValue
(
double& dbValue //双精度型
)
BOOL CADOParameter::GetValue
(
CString& strValue, //字符串型
CString strDateFormat = _T("")
)
BOOL CADOParameter::GetValue
(
COleDateTime& time  //时间型
)
BOOL CADOParameter::GetValue
(
_variant_t& vtValue //可变换型
)

// 设置对象名字
CString CADOParameter::SetName
(
CString strName //名字
)

// 返回对象名字
CString CADOParameter::GetName

// 返回对象类型
int CADOParameter::GetType()

// 返回对象指针
_ParameterPtr CADOParameter::GetParameter
B.4 CADOCommand类函数介绍
CADOCommand类包含关于_CommandPtr的函数集合。
// 构造函数
CADOCommand::CADOCommand
(
CADODatabase* pAdoDatabase, // CADODatabase对象指针
CString strCommandText = _T(""), //CADODatabase对象的字符串
int nCommandType = typeCmdStoredProc //CADODatabase对象类型
// CADOCommand::typeCmdText 将strCommandText作为命令字符定义或存储过程
// CADOCommand::typeCmdTable 将strCommandText作为表名,该表的列由内部SQL查询返回
// CADOCommand::typeCmdTableDirect将strCommandText作为表名,所有列返回
// CADOCommand::typeCmdStoredProc 将strCommandText存储过程名字
// CADOCommand::typeCmdUnknown 命令类型未知
// CADOCommand::typeCmdFile strCommandText作为文件名字
)

// 加参数
BOOL CADOCommand::AddParameter

// 设置命令文本
void CADOCommand::SetText
(
CString strCommandText //命令文本
)

// 返回命令文本
CString CADOCommand::GetText

// 设置CADOCommand对象类型
void CADOCommand::SetType
(
int nCommandType //指示CADOCommand对象类型的整数值
)

// 返回命令对象指针
_CommandPtr CADOCommand::GetCommand

// 执行命令文本
BOOL CADOCommand::Execute

你可能感兴趣的:(ADO)