青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 19,  comments - 21,  trackbacks - 0
一、 引言

  數(shù)據(jù)庫屬于最流行的應(yīng)用程序之一,幾乎每個(gè)商業(yè)部門都使用數(shù)據(jù)庫來記錄、管理各種各樣的數(shù)據(jù)。在VC下我們可以在創(chuàng)建工程時(shí)選擇數(shù)據(jù)庫支持,并選定數(shù)據(jù)源和相關(guān)的表,并選擇CRecordView作為我們這個(gè)程序的基類,這樣做可以毫不費(fèi)力的將應(yīng)用程序和數(shù)據(jù)庫建立了關(guān)聯(lián),而幾乎不用編什么代碼,但這樣做的前提是在新建工程時(shí)已明確知道用到哪個(gè)數(shù)據(jù)庫,并且有相關(guān)的數(shù)據(jù)庫。事實(shí)上我們往往有許多已做好的應(yīng)用程序和類,其功能除了未和數(shù)據(jù)源建立關(guān)聯(lián)外以基本滿足要求,我們只要在其基礎(chǔ)上添加ODBC接口,使之與數(shù)據(jù)庫建立關(guān)聯(lián)即可,這樣做避免了與數(shù)據(jù)庫無關(guān)部分代碼的重新編寫所造成的重復(fù)性操作,大大提高了代碼的重用性和利用率。所以在普通程序上通過添加ODBC應(yīng)用而與數(shù)據(jù)庫建立關(guān)聯(lián)的方法是完全行之有效的。

  二、 ODBC技術(shù)

  ODBC(Open Database Conectivity 開放式數(shù)據(jù)庫互聯(lián))技術(shù),作為Microsoft公司對數(shù)據(jù)庫進(jìn)行訪問的標(biāo)準(zhǔn)應(yīng)用程序接口(API)和Windows開放式服務(wù)體系結(jié)構(gòu)OSA的一個(gè)重要組成部分已廣為眾多的Windows程序員所熟悉、認(rèn)可。ODBC的工作依賴于數(shù)據(jù)庫制造商提供的驅(qū)動(dòng)程序,使用ODBC API的時(shí)候,Windows的ODBC管理程序,把數(shù)據(jù)庫訪問的請求傳遞給正確的驅(qū)動(dòng)程序,驅(qū)動(dòng)程序再使用SQL語句指示DBMS完成數(shù)據(jù)庫訪問工作,因此,ODBC的存在為我們開發(fā)應(yīng)用數(shù)據(jù)庫程序提供了非常強(qiáng)大的能力和靈活性。

  三、 程序示例

  (一)打開Visual C++,在"File"菜單上點(diǎn)選"New…",然后在彈出的"New"對話框中選定"MFC AppWizard(exe)"類的項(xiàng)目,"Project name"為Normal,按下OK鍵,下一Step 1屏幕中選"Single document"單文檔支持,用到后面的選項(xiàng)除在最后一步選擇"CFormView"作為本工程視類的基類外均為確省值,此時(shí)即可按下Finish鍵,結(jié)果系統(tǒng)將生成一個(gè)新的項(xiàng)目Normal。

  我們就將此工程當(dāng)做原有的工程,接下來我們便在此工程基礎(chǔ)上對其添加ODBC應(yīng)用,使該工程能同數(shù)據(jù)源建立關(guān)聯(lián),能對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行操作和管理。

  (二)打開"控制面板"上的"ODBC (32bits)",對數(shù)據(jù)源進(jìn)行注冊。為了使ODBC能與數(shù)據(jù)庫一起工作,就必須把數(shù)據(jù)庫注冊到ODBC驅(qū)動(dòng)程序管理器,這項(xiàng)工作可以通過定義一個(gè)DSN或數(shù)據(jù)源名字來完成。在彈出的"ODBC數(shù)據(jù)源管理器"中選擇"User DSN"屬性頁,點(diǎn)擊"Add…"按鈕。選擇"Microsoft Access Driver(*.mdb)"作為數(shù)據(jù)源的驅(qū)動(dòng)器,點(diǎn)擊"完成"按鈕。在彈出的"ODBC Microsoft Access 97 Setup"對話框中在"Data Source Name:"欄添入RP97,"Description:"欄只起注釋說明的作用,可以不填,然后點(diǎn)擊"Select…"按鈕,選擇所要注冊的數(shù)據(jù)源,然后點(diǎn)擊"OK"就完成了對數(shù)據(jù)源的注冊,到這一步,本機(jī)上的任意程序只要通過ODBC接口和數(shù)據(jù)源名"RP97"就能完成對數(shù)據(jù)庫的訪問了。

  (三)在VC的"Workspace"活動(dòng)窗口中選擇"FileView"屬性頁,打開標(biāo)準(zhǔn)框架頭文件"StdAfx.h",并在最后一個(gè)#include后面添加對"afxdb.h"的引用:#include <afxdb.h>

  (四) 在"Workspace"活動(dòng)窗口中選擇"ClassView"屬性頁,在"Normal Classes"上右鍵,選"New Class…",在彈出的"New Class"對話框的"Base Class"欄選擇"CRecordSet"做為新添加的類的基類,在"Name"欄填寫類名"CODBCSet",點(diǎn)擊"OK",在隨后彈出的對話框的"ODBC"欄選擇剛注冊的"RP97"數(shù)據(jù)源,點(diǎn)擊"OK"后選擇該數(shù)據(jù)庫的一個(gè)表,點(diǎn)擊"OK"在"ClassView"里就多了一個(gè)以CRecordSet為基類的新類"CODBCSet"。下面三個(gè)函數(shù)完成了數(shù)據(jù)庫各級元素的綁定工作:

CString CODBCSet::GetDefaultConnect()
{
 
return _T("ODBC;DSN=RP97");
}


CString CODBCSet::GetDefaultSQL()
{
 
return _T("[單據(jù)表]");
}


void CODBCSet::DoFieldExchange(CFieldExchange* pFX)
{
 
//{{AFX_FIELD_MAP(CODBCSet)
 pFX->SetFieldType(CFieldExchange::outputColumn);
 RFX_Text(pFX, _T(
"[單據(jù)ID]"), m_column1);
 RFX_Text(pFX, _T(
"[單據(jù)名稱]"), m_column2);
 RFX_Text(pFX, _T(
"[報(bào)帳人]"), m_column3);
 
//}}AFX_FIELD_MAP
}
 

  (五)按同樣的方法再添加一個(gè)基于"generic CWnd"的新類"CConnectDB"。在該類的源文件里添加對"ODBCSet.h"的引用:#include "ODBCSet.h"。在該類的頭文件的"class CconnectDB"前添加class CODBCSet;并在該類里添加公有型成員變量和函數(shù):

CDatabase m_dbData;
CODBCSet
* m_pSet;
void CConnectDB::Initial()
{
 
//打開數(shù)據(jù)源RP97
 CString os=_T("odbc; dsn=RP97");
 m_dbData.Open(NULL,FALSE,FALSE,
0);
 m_pSet
=new CODBCSet(&m_dbData);
 
//通過SQL結(jié)構(gòu)化查詢語言打開RP97里的單據(jù)表
 CString sql="SELECT * FROM 單據(jù)表";
 m_pSet
->Open(AFX_DB_USE_DEFAULT_TYPE,sql);
}



  (六)在Form上添加一個(gè)"測試"按鈕及其響應(yīng)函數(shù)OnTest():

void CNormalView::OnTest() 
{
 CConnectDB connectDB;
 
//執(zhí)行完Initial()后m_pSet指針才不為空,方可安全使用。
 connectDB.Initial();
 
if(connectDB.m_pSet==NULL)
  
return;
 connectDB.m_pSet
->MoveFirst();
 CString str
=connectDB.m_pSet->m_column3;
 AfxMessageBox(str);
}
 

  最后在該文件開始處添加兩個(gè)引用:

#include 
"ConnectDB.h"
#include 
"ODBCSet.h" 

  四、 運(yùn)行與測試

  編譯運(yùn)行程序,點(diǎn)擊"測試"按鈕,就會(huì)將"RP97"數(shù)據(jù)庫的"單據(jù)表"的第一條記錄的"報(bào)帳人"字段所在的內(nèi)容通過對話框彈出來。

  小結(jié):

  本程序的關(guān)鍵在于對數(shù)據(jù)庫指針m_pSet的獲取,當(dāng)類CConnectDB 的成員函數(shù)Initial()被執(zhí)行完時(shí),m_pSet就已被獲取到了,而在此之前該指針是空的,是不能使用的,所以在實(shí)際應(yīng)用中必須保證在使用m_pSet之前調(diào)用過函數(shù)Initial()。當(dāng)m_pSet被獲取到之后,就可以想其他ODBC應(yīng)用程序一樣使用CrecordSet類里的各種函數(shù)對數(shù)據(jù)庫進(jìn)行各種需要的操作和管理了。
posted on 2005-11-24 13:42 halCode 閱讀(421) 評論(0)  編輯 收藏 引用 所屬分類: VC/MFC

<2025年12月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

常用鏈接

留言簿(7)

隨筆分類

隨筆檔案

文章分類

文章檔案

相冊

編程資源

不務(wù)正業(yè)

找工作

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国模精品一区二区三区| 香蕉久久夜色精品| 一本一道久久综合狠狠老精东影业| 国产精品久久久久免费a∨大胸 | 一区二区三区四区国产| 国产视频自拍一区| 欧美国产日韩在线观看| 欧美三级午夜理伦三级中文幕| 久久精品久久99精品久久| 欧美黑人在线观看| 久久久免费av| 国产精品入口尤物| 亚洲精品色图| 在线成人av.com| 亚洲午夜在线| 一区二区三区av| 蜜桃av噜噜一区| 久久三级福利| 欧美肥婆在线| 蜜月aⅴ免费一区二区三区| 国产精品久久久久久户外露出 | 久久只精品国产| 99亚洲一区二区| 久久裸体视频| 久久久国产成人精品| 你懂的国产精品| 欧美视频在线观看免费网址| 久久精品99国产精品酒店日本| 欧美精品在欧美一区二区少妇| 欧美成人激情视频免费观看| 国产欧美日韩精品一区| 欧美福利视频在线观看| 激情视频一区二区三区| 亚洲综合国产| 午夜在线a亚洲v天堂网2018| 欧美日韩国产黄| 亚洲激情啪啪| 亚洲激情视频在线播放| 久久精品一区二区三区四区| 欧美一级艳片视频免费观看| 欧美午夜久久| av成人黄色| 亚洲视频图片小说| 欧美日韩不卡一区| 亚洲区一区二| 日韩一区二区高清| 欧美精品18+| 亚洲精品视频在线看| 亚洲精品在线免费观看视频| 欧美成人免费视频| 欧美国产日韩一二三区| 亚洲激情影视| 欧美激情一区二区三区在线| 亚洲国产福利在线| 亚洲片区在线| 欧美视频一区二区| 宅男精品视频| 亚洲视频www| 国产精品久久久久77777| 亚洲视频综合| 久久精品国产亚洲一区二区| 国产一区二区三区最好精华液| 久久久91精品国产一区二区三区 | 欧美日韩视频| 性欧美超级视频| 亚洲经典视频在线观看| 欧美一区二区黄| 日韩午夜高潮| 国产一区欧美| 欧美三级电影精品| 欧美亚洲专区| 日韩一级二级三级| 久久在精品线影院精品国产| 这里只有精品丝袜| 国内一区二区在线视频观看| 欧美女激情福利| 久久久亚洲欧洲日产国码αv | 亚洲婷婷在线| 亚洲国产精品99久久久久久久久| 欧美一区二区三区视频免费播放| 亚洲激情社区| 国产在线高清精品| 国产精品h在线观看| 久久影院亚洲| 久久成人国产| 亚洲一区免费| 在线视频日韩精品| 亚洲第一偷拍| 欧美jjzz| 狂野欧美性猛交xxxx巴西| 一本一本a久久| 亚洲人成小说网站色在线| 国产日韩欧美在线一区| 国产精品精品视频| 欧美理论电影在线观看| 久久一区视频| 久久综合中文字幕| 久久精品在线观看| 欧美一级在线视频| 亚洲午夜av电影| 在线视频精品| 一区二区欧美日韩| 99re8这里有精品热视频免费| 欧美高清在线视频观看不卡| 免费一区视频| 你懂的成人av| 欧美gay视频| 欧美成人情趣视频| 欧美成人自拍视频| 免费人成精品欧美精品| 久久综合999| 免费久久99精品国产自在现线| 葵司免费一区二区三区四区五区| 久久9热精品视频| 久久精品国产亚洲精品| 久久久久九九视频| 久久精品国产第一区二区三区| 久久精品国产清自在天天线| 久久久人成影片一区二区三区| 久久影视三级福利片| 巨乳诱惑日韩免费av| 欧美激情精品久久久久久变态| 亚洲成在线观看| 亚洲日本视频| 亚洲一二三区在线| 亚洲综合另类| 久久精品国产精品亚洲精品| 久久全国免费视频| 欧美高清视频在线播放| 欧美日产国产成人免费图片| 欧美日韩在线三区| 国产精品人人做人人爽| 国产一区二区三区在线免费观看| 精品成人国产| 日韩亚洲一区二区| 亚洲女人av| 乱人伦精品视频在线观看| 欧美激情综合色| 99在线精品观看| 久久xxxx| 欧美精品一区二区三区高清aⅴ| 国产精品二区三区四区| 国产午夜精品视频| 亚洲日韩视频| 午夜精品一区二区三区在线播放 | 好吊视频一区二区三区四区| 亚洲人精品午夜| 欧美一级片在线播放| 免播放器亚洲一区| 亚洲精品久久久久久久久久久久| 亚洲欧美资源在线| 老司机午夜免费精品视频 | 欧美三级乱人伦电影| 国产一区二区三区直播精品电影| 亚洲欧洲精品一区二区三区不卡| 亚洲在线第一页| 欧美福利视频网站| 午夜精品视频网站| 欧美成人一区二区三区在线观看 | 国产精品久久久久久久午夜片| 一区二区三区亚洲| 亚洲一区中文字幕在线观看| 久久噜噜亚洲综合| 夜夜爽www精品| 免费日本视频一区| 国产曰批免费观看久久久| 在线亚洲高清视频| 免费成人在线视频网站| 亚洲永久精品大片| 欧美日韩国产亚洲一区 | 国产伦精品一区| 夜夜狂射影院欧美极品| 老司机精品导航| 欧美一区二区成人| 欧美日韩中字| 亚洲免费福利视频| 欧美刺激午夜性久久久久久久| 欧美一级电影久久| 国产精品美女在线| 一本色道久久综合狠狠躁的推荐| 欧美国产日本高清在线| 久久er99精品| 国产综合香蕉五月婷在线| 亚洲亚洲精品在线观看| 亚洲精品国产精品国自产在线 | 国产精品高清免费在线观看| 日韩亚洲精品在线| 开元免费观看欧美电视剧网站| 午夜精品免费| 国产精品视频成人| 午夜精品久久久久久久久| 亚洲美女av电影| 欧美日韩国产在线| 99在线精品视频在线观看| 亚洲丁香婷深爱综合| 欧美不卡高清| 亚洲另类黄色| a4yy欧美一区二区三区| 欧美日韩一区免费| 亚洲女人天堂av|