VC用Ado接口連接和使用數(shù)據(jù)庫(kù)及注意事項(xiàng)
1、進(jìn)行方法調(diào)用時(shí),所傳遞的參數(shù)的類(lèi)型的轉(zhuǎn)換(可能存在比本文更簡(jiǎn)便的處理方法但我未發(fā)現(xiàn))
2、每個(gè)源文件的每行注釋說(shuō)明了其文件名
3、請(qǐng)關(guān)注相關(guān)頭文件包含關(guān)系
4、請(qǐng)關(guān)注文中所有中文注釋
5、更多的內(nèi)容請(qǐng)參閱 "VC安裝目錄\Include\adoint.h"文件,adoint即ActiveX Data Object
InterFace(菜 鳥(niǎo)請(qǐng)勿驚慌,這僅僅只是個(gè)名稱(chēng))
二、下面的源文件與您的數(shù)據(jù)庫(kù)應(yīng)用程序不直接相關(guān),但其目標(biāo)代碼(生成的.obj文件)是您必需的,請(qǐng)參考
file://Ado.cpp文件///////////////////////////////////////////
#include
#include
#include
該文件使用方法:新建一個(gè)空的MFC工程,將此文件添加到該工程中,編譯生成Ado.obj文件,再將此.obj文件添加到您的數(shù)據(jù)庫(kù)應(yīng)用程序.該源文件在您的數(shù)據(jù)庫(kù)應(yīng)用程序中是不需要的。
三、下面是與您的數(shù)據(jù)庫(kù)應(yīng)用程序源文件相關(guān)代碼(非所有代碼)
file://1、ado.h文件////////////////////////////////////////
#ifndef __ADO__H__LZG
#define __ADO__H__LZG
#include
#include
#include
#endif
file://2、stdafx.h文件////////////////////////////////////////
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
#include // MFC core and standard components
#include // MFC extensions
#include // MFC Automation classes
#include // MFC support for Internet Explorer 4 Common Controls
#include "ado.h" file://請(qǐng)注意這里
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include
file://3、數(shù)據(jù)庫(kù)應(yīng)用程序.h文件///////////////////////////////////////////////
file://以下為用到的若干相關(guān)數(shù)據(jù)庫(kù)引用變量(聲明在其頭文件中)
ADOField* pfd;
ADOFields* pfds;
CString m_dbfile;
ADORecordset* prs;
ADOConnection* pdb;
file://4、數(shù)據(jù)庫(kù)應(yīng)用程序.cpp文件/////////////////////////////////////////////
#include "stdafx.h"
#include "數(shù)據(jù)庫(kù)應(yīng)用程序.h"
file://這里添加其它相關(guān)頭文件
file://以下為該.cpp文件中若干自定義或非自定義的方法,與數(shù)據(jù)庫(kù)連接相關(guān)
file://其中每一條語(yǔ)句都有含義,請(qǐng)關(guān)注其中的注釋
BOOL CBKDlg::InitDataEnv()
{
file://下面定義了一個(gè)簡(jiǎn)單的連接字符串,當(dāng)然還有更復(fù)雜的
CString s=_T("Provider=Microsoft.Jet.OLEDB.3.51;Data Source=d:\\data\\資料借閱管理.mdb");
::CoInitialize (NULL);//初始化COM環(huán)境
CoCreateInstance(CLSID_CADOConnection,
NULL,
CLSCTX_INPROC_SERVER,
IID_IADOConnection15,
(LPVOID*)&pdb
);//初始化一個(gè)ADO連接
CoCreateInstance(CLSID_CADORecordset,
NULL,
CLSCTX_INPROC_SERVER,
IID_IADORecordset,
(LPVOID*)&prs
);//初始化一個(gè)ADO數(shù)據(jù)集
CoCreateInstance(CLSID_CADOField,
NULL,
CLSCTX_INPROC_SERVER,
IID_IADOFields,
(LPVOID*)&pfds
);//初始化一個(gè)ADO數(shù)據(jù)域集合(域即是Fox中的字段,下同)
CoCreateInstance (CLSID_CADOField,
NULL,
CLSCTX_INPROC_SERVER,
IID_IADOField,
(LPVOID*)&pfd
);//初始化一個(gè)ADO數(shù)據(jù)域集合中的一個(gè)域
file://打開(kāi)上述ADO連接
pdb->Open((unsigned short*)(LPCSTR)s,(unsigned short*)"",(unsigned short*)"",0);
file://打開(kāi)上述ADO數(shù)據(jù)集,但它的連接參數(shù)是使用的上述字符串
file://應(yīng)當(dāng)存在以上面的連接替換該字符串的方法,但我沒(méi)找到
prs->Open(COleVariant(_T("資料信息")),COleVariant(s),adOpenKeyset,adLockOptimistic,adCmdTable);
file://數(shù)據(jù)集的域不存在打開(kāi)與否,只需直接到已打開(kāi)的數(shù)據(jù)集中引用即可,詳情請(qǐng)見(jiàn)
file://CBKDlg::OnBeforeColUpdateDatagrid方法
m_dg.ClearFields ();//MS DATAGRID 控件(Activex)的數(shù)據(jù)清空
m_dg.SetRefDataSource(prs); file://上述控件與數(shù)據(jù)集的綁定
return TRUE;
}
BOOL CBKDlg::DestroyWindow()
{
// TODO: Add your specialized code here and/or call the base class
m_dg.SetRefDataSource(NULL);
long state;
file://下面的處理可能存在邏輯上的錯(cuò)誤,不過(guò)關(guān)閉數(shù)據(jù)集與數(shù)據(jù)連接的語(yǔ)法是正確的
if(!FAILED(prs->get_State(&state)))
if(state!=adStateClosed)
{
prs->Close();
prs=NULL;
}
if(!FAILED(pdb->get_State(&state)))
if(state!=adStateClosed)
{
pdb->Close();
pdb=NULL;
}
::CoUninitialize ();//釋放COM環(huán)境
return CDialog::DestroyWindow();
}
void CBKDlg::OnBeforeColUpdateDatagrid(short ColIndex, VARIANT FAR* OldValue, short FAR* Cancel)
{
file://該事件(方法)在MS DATAGRID 控件(ActiveX)的單元數(shù)據(jù)更新前發(fā)生
file://該事件您可能用不著,但其中的代碼您可能用得著
COleVariant v((LPCSTR)m_dg.GetText ());//獲取上述控件當(dāng)前單元格的數(shù)據(jù)
CString fieldname=m_dg.GetColumns().GetItem(COleVariant(ColIndex)).GetCaption();
DataTypeEnum fieldtype;//描述ADO數(shù)據(jù)類(lèi)型的枚舉類(lèi)型
prs->get_Fields(&pfds);//從數(shù)據(jù)集中獲得數(shù)據(jù)域集合
pfds->get_Item (COleVariant(fieldname),&pfd);//從數(shù)據(jù)域集合中獲得特定名稱(chēng)的域
pfd->get_Type (&fieldtype);//從上述域中獲取其數(shù)據(jù)類(lèi)型,如整型或字符串型
switch (fieldtype){
case adSmallInt:
case adInteger:
break;
case adDate:
break;
case adCurrency://Data type describing for Money ,Understand?
break;
case adVarChar://對(duì)應(yīng)于VB中的String類(lèi)型和VC中的CString類(lèi)型
break;
default:
break;
}
}//該方法來(lái)源于MS DataGrid ActiveX控件的事件,無(wú)具體的處理代碼,望海涵
- VC基于ADO技術(shù)訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的方法
- VC實(shí)現(xiàn)ODBC數(shù)據(jù)庫(kù)操作實(shí)例解析
- c++連接mysql數(shù)據(jù)庫(kù)的兩種方法(ADO連接和mysql api連接)
- 用C語(yǔ)言操作MySQL數(shù)據(jù)庫(kù)的通用方法
- C語(yǔ)言連接并操作Sedna XML數(shù)據(jù)庫(kù)的方法
- c語(yǔ)言連接mysql數(shù)據(jù)庫(kù)的實(shí)現(xiàn)方法
- VC中使用ADO開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序簡(jiǎn)明教程
相關(guān)文章
Asp.net在頁(yè)面間傳遞大量數(shù)據(jù)(數(shù)據(jù)表)建議采用的方法
能讓數(shù)據(jù)在 兩個(gè)不同站點(diǎn)之間傳遞嗎,針對(duì)這個(gè)問(wèn)題將會(huì)展開(kāi)本文的探討有想在A站點(diǎn)的數(shù)據(jù)傳遞到B站點(diǎn)的朋友們可以適當(dāng)參考下,或許本文對(duì)你有所幫助2013-02-02.Net Core導(dǎo)入千萬(wàn)級(jí)數(shù)據(jù)至Mysql數(shù)據(jù)庫(kù)的實(shí)現(xiàn)方法
今天我們談?wù)凪ySQL怎么高性能插入千萬(wàn)級(jí)的數(shù)據(jù)的,討論這個(gè)問(wèn)題牽扯到一個(gè)數(shù)據(jù)遷移功能,高性能的插入數(shù)據(jù),接下來(lái)通過(guò)本文給大家分享幾種實(shí)現(xiàn)方法,感興趣的朋友跟隨小編一起學(xué)習(xí)下吧2021-05-05asp.net服務(wù)器端指令include的使用及優(yōu)勢(shì)介紹
將指定文件的內(nèi)容插入 ASP.NET 文件中,包括網(wǎng)頁(yè)(.aspx 文件)、用戶(hù)控件文件(.ascx 文件)和 Global.asax 文件2013-04-04.Net Core 下使用ZKWeb.System.Drawing實(shí)現(xiàn)驗(yàn)證碼功能(圖形驗(yàn)證碼)
本文介紹.Net Core下用第三方ZKWeb.System.Drawing實(shí)現(xiàn)驗(yàn)證碼功能。非常不錯(cuò)具有參考借鑒價(jià)值,感興趣的朋友一起看看吧2016-11-11asp.net實(shí)現(xiàn)將ppt文檔轉(zhuǎn)換成pdf的方法
這篇文章主要介紹了asp.net實(shí)現(xiàn)將ppt文檔轉(zhuǎn)換成pdf的方法,通過(guò)自定義函數(shù)實(shí)現(xiàn)將pptx格式的文件轉(zhuǎn)換成pdf格式文件的功能,是非常實(shí)用的技巧,需要的朋友可以參考下2014-11-11詳解ASP.NET Core 之 Identity 入門(mén)(一)
本篇文章主要介紹了ASP.NET Core 之 Identity 入門(mén),主要負(fù)責(zé)對(duì)用戶(hù)的身份進(jìn)行認(rèn)證,有興趣的可以了解一下。2016-12-12ASP.NET百度Ueditor編輯器實(shí)現(xiàn)上傳圖片添加水印效果
這篇文章主要給大家介紹了ASP.NET百度Ueditor編輯器1.4.3這個(gè)版本實(shí)現(xiàn)上傳圖片添加水印效果的相關(guān)資料,文中通過(guò)圖文及示例代碼介紹的非常詳細(xì),相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-03-03ASP.NET?Core使用EF創(chuàng)建模型(包含屬性、排除屬性、主鍵和生成值)
這篇文章介紹了ASP.NET?Core使用EF創(chuàng)建模型的的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04通過(guò).net core調(diào)用so文件的方法
工作中需要在linux上監(jiān)控系統(tǒng)空閑時(shí)間,但是沒(méi)有找到C#代碼,只找到C的代碼,所以準(zhǔn)備將C文件編譯為so然后用P/invoke調(diào)用,這篇文章主要介紹了如何通過(guò).net core調(diào)用so文件,需要的朋友可以參考下2023-08-08WebForm獲取checkbox選中的值(幾個(gè)簡(jiǎn)單的示例)
WebForm中用checkbox的地方挺多的,下面寫(xiě)了幾個(gè)簡(jiǎn)單的例子,方便以后學(xué)習(xí)使用2014-07-07