成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Visual C++中用MFC ODBC操作Access數據庫

運維 數據庫運維
本文通過一個應用實例,討論了利用MFC ODBC技術實現對Access數據源的顯示,在此基礎上,分析了如何設計以達到利用MFC ODBC來實現修改、增加、刪除Access數據源中的記錄的功能。

本實例是某項目中的一部分,目的是實現MFC ODBC數據庫與Access數據表格之間的相互操作。包括用Visual C++中的MFC ODBC技術實現對Access數據表格的內容的顯示、添加、修改和刪除的功能。

1、ODBC數據源的創建

筆者使用的操作系統為Windows XP,工具是Visual C++6.0。此例中建立的Access表格取名為“plc”。

在“控制面板”中雙擊“管理工具”圖標,然后在新出現的窗口中雙擊“數據源(ODBC)”,在彈出的對話框中選中“用戶DSN”中的“dBASE Files”,單擊“添加”按鈕,從彈出的對話框中選中“Microsoft Access Driver(*.mdb)”。單擊“完成”后,將彈出一個新的對話框,在數據源名及說明后的編輯框中填入表格名“plc”。

在命名數據源之后,需要把它連接到一個數據庫。單擊“選擇”,如圖1所示,得到存儲在數據目錄中plc.mdb的拷貝文件,選中之,單擊“確定”關閉此對話框。然后單擊“確定”,完成數據源的創建。

Visual C++中用MFC ODBC操作Access數據庫

2、 使用AppWizard創建一個數據庫應用程序

筆者開始從AppWizard開始創建一個新的MFC AppWizard(exe)項目。命名為Jh,然后遵從以下步驟:

1) 在MFC AppWizard第一步對話框中,選擇“單個文檔”。

2) 在MFC AppWizard第二步對話框中,選擇“查看數據庫不使用文件支持”,再單擊“Data Source”。

3)在RecordSet Type組框中,選擇Dynaset。在Data Source組框中,單擊ODBC單選按鈕,然后從下拉列表中選擇plc,如圖2所示,單擊ok,在彈出的新的對話框中選中message,即為本項目所要操作的表。

Visual C++中用MFC ODBC操作Access數據庫

以后幾步接收缺省值,單擊“完成”即可。至此,已創建一個應用程序,并且在程序中自行生成一個數據源和數據源中的一個表的相關程序,其程序清單如下:

  1. class CJhSet : public Crecordset//基于CRecordset的CjhSet新類  
  2.  
  3. {  
  4.  
  5. public:  
  6.  
  7. CJhSet(CDatabase* pDatabase = NULL);  
  8.  
  9. DECLARE_DYNAMIC(CJhSet)  
  10.  
  11. // Field/Param Data  
  12.  
  13. //{{AFX_FIELD(CJhSet, CRecordset)  
  14.  
  15. //對應表中一些被綁定字段的變量  
  16.  
  17. CString m_baudrate;  
  18.  
  19. CString m_type;  
  20.  
  21. CString m_unit;  
  22.  
  23. CString m_number;  
  24.  
  25. CString m_address;  
  26.  
  27. CString m_istart;  
  28.  
  29. CString m_iend;  
  30.  
  31. CString m_ostart;  
  32.  
  33. CString m_oend;  
  34.  
  35. //}}AFX_FIELD  
  36.  
  37. // Overrides  
  38.  
  39. // ClassWizard generated virtual function overrides  
  40.  
  41. //{{AFX_VIRTUAL(CJhSet)  
  42.  
  43. public:  
  44.  
  45. virtual CString GetDefaultConnect(); // 返回被連接的數據源名稱  
  46.  
  47. virtual CString GetDefaultSQL(); // 返回數據源中所選表名稱  
  48.  
  49. virtual void DoFieldExchange(CFieldExchange* pFX); // RFX support  
  50.  
  51. //}}AFX_VIRTUAL  
  52.  
  53. // Implementation  
  54.  
  55. #ifdef _DEBUG  
  56.  
  57. virtual void AssertValid() const;  
  58.  
  59. virtual void Dump(CDumpContext& dc) const;  
  60.  
  61. #endif}; 

3、 實現程序的顯示記錄的功能

一旦AppWizard完成編寫這些文件,它將啟動對話框編輯器,這樣就可以設計自己的表單了。CRecordView應用程序圍繞著充當應用程序主窗口的對話框而創建。筆者也將使用像表單一樣的對話框來顯示存儲在plc數據庫記錄域中的值。如圖3所示來放置靜態文本框與編輯文本框。

Visual C++中用MFC ODBC操作Access數據庫

CJHSet類的成員變量如圖4所示。所有的變量均為CString對象。由AppWizard創建的每個變量的類型一般與相應數據庫域的類型相似。除了創建成員變量,AppWizard還編寫了一組數據交換函數——類似于對話框的DDX函數——來在用來顯示信息的控件與定義于CRecordSet類中的數據庫域之間交換信息。

Visual C++中用MFC ODBC操作Access數據庫

為了實現數據傳輸,就要把每個控件與代表數據庫域的CJHSet變量聯系起來。筆者通過使用CJHView來成員變量m_pSet來指向應用程序的CJHSet對象。選擇每個資源ID(筆者這里未修改編輯框的默認ID),并單擊Add Variable,從下拉表中直接選擇相應的成員變量名。全部設置好之后單擊OK,至此,運行程序,就可以實現簡單的與數據庫之間的數據顯示功能。

#p#

4、實現程序的添加、修改和刪除記錄的功能

在實現上述功能之前,需要按“插入->資源->DIALOG->新建”建立一個新的對話框(與圖1所示對話框類似),以建立添加、修改的對象。并為此對話框建立一個基于CDialog基礎類的新的類CAddDlg。其ID為IDD_DIALOG1。

然后在JhView.cpp中加“#include "AddDlg.h"”,并為“添加記錄(IDC_ADD)”鍵編寫程序代碼如下。其中已經作了詳細的注解。

  1. void CJhView::OnAdd()   
  2.  
  3. {  
  4.  
  5. //建立一個新的添加對話框  
  6.  
  7. CAddDlg dlg;   
  8.  
  9. if(dlg.DoModal()==IDOK)  
  10.  
  11. {  
  12.  
  13. //增加一條新的記錄  
  14.  
  15. m_pSet->AddNew();   
  16.  
  17. //把對話框中的記錄傳遞到記錄集中  
  18.  
  19. m_pSet->m_baudrate=dlg.m_br;  
  20.  
  21. m_pSet->m_type=dlg.m_ty;  
  22.  
  23. m_pSet->m_unit=dlg.m_un;  
  24.  
  25. m_pSet->m_number=dlg.m_nu;  
  26.  
  27. m_pSet->m_address=dlg.m_add;  
  28.  
  29. m_pSet->m_istart=dlg.m_is;  
  30.  
  31. m_pSet->m_iend=dlg.m_ie;  
  32.  
  33. m_pSet->m_ostart=dlg.m_os;  
  34.  
  35. m_pSet->m_oend=dlg.m_oe;  
  36.  
  37. m_pSet->Update(); //把新的記錄存在數據源里  
  38.  
  39. m_pSet->MoveLast(); //指定當前記錄為最后一條記錄  
  40.  
  41. UpdateData(false); //清空已輸入內容  
  42.  
  43. }  
  44.  

添加記錄部分,應該先讀出當前的記錄,使其顯示在添加/修改對話框中,即:

  1. dlg.m_br=m_pSet->m_baudrate;  
  2.  
  3. dlg.m_ty=m_pSet->m_type;  
  4.  
  5. dlg.m_un=m_pSet->m_unit;  
  6.  
  7. dlg.m_nu=m_pSet->m_number;  
  8.  
  9. dlg.m_add=m_pSet->m_address;  
  10.  
  11. dlg.m_is=m_pSet->m_istart;  
  12.  
  13. dlg.m_ie=m_pSet->m_iend;  
  14.  
  15. dlg.m_os=m_pSet->m_ostart;  
  16.  
  17. dlg.m_oe=m_pSet->m_oend; 

余下的與添加記錄代碼相同,除了不要定位“m_pSet->MoveLast();”而已。

刪除記錄只是需要使用Delete()成員函數刪除當前記錄之后移到下一個記錄即可。程序清單如下:

  1. void CJhView::OnDel()   
  2.  
  3. {  
  4.  
  5. try//試著刪除一條記錄  
  6.  
  7. {  
  8.  
  9. m_pSet->Delete();  
  10.  
  11. }  
  12.  
  13. catch(CDBException*error)  
  14.  
  15. {  
  16.  
  17. AfxMessageBox(error->m_strError);  
  18.  
  19. error->Delete();  
  20.  
  21. m_pSet->MoveFirst();  
  22.  
  23. UpdateData(FALSE);  
  24.  
  25. return;  
  26.  
  27. }  
  28.  
  29. //移到下一個記錄  
  30.  
  31. m_pSet->MoveNext();  
  32.  
  33. //測試是否為文件末尾,是,則使用MoveLast(),而不是使用MoveNext()  
  34.  
  35. if(m_pSet->IsEOF())  
  36.  
  37. m_pSet->MoveLast();  
  38.  
  39. UpdateData(FALSE);  
  40.  

對多個記錄集的操作與對單個記錄集的操作類似,只是增加了CRecordSet類的派生類。

總結:

MFC ODBC讓開發人員僅僅使用很少的代碼就可以完成復雜的數據庫訪問,并可以對數據庫中的內容方便的實現添加、修改、刪除等操作,從而極大地減少了軟件開發的工作量,縮短了開發周期,提高了效率。而且MFC ODBC簡單易學,能實現大部分ODBC API函數的功能,所以了解和掌握MFC ODBC技術,將會給大型數據庫應用軟件帶來清晰、快捷、方便等功能。

【編輯推薦】

  1. 開發BI系統時的需求分析研究
  2. 基于XML的數據庫總體分析(上)
  3. 基于XML的數據庫總體分析(下)
  4. 嵌入式數據庫Sqlce讀取數據過程簡介
  5. 如何不使用數據庫緩存,還達到實時更新
責任編輯:趙鵬 來源: 天極網
相關推薦

2024-04-18 09:56:16

2010-01-12 14:16:31

Visual C++語

2009-08-19 16:30:55

C#操作Access數

2009-08-19 16:40:26

C#操作Access數

2009-08-12 14:27:36

訪問MySQL數據庫C# ODBC

2011-07-13 14:53:56

VCODBCAccess

2009-07-03 14:10:59

2010-02-02 17:27:16

C++連接MySqL數

2009-07-31 17:01:21

C#存取Access數

2010-03-04 13:47:13

Python操作Acc

2009-08-19 16:19:01

C#操作Access數

2009-09-01 09:45:49

Visual C#對數

2011-05-26 13:42:50

MFC連接MySql數據庫

2009-08-03 14:17:18

C#連接AccessC#連接SQL Ser

2009-08-28 13:03:55

C#壓縮Access數

2010-01-27 15:58:35

C++數據結構

2010-05-19 15:12:32

導入MySQL

2009-12-17 13:30:49

Ruby操作Acces

2010-06-11 13:13:38

訪問MySQL數據庫

2010-05-17 10:11:11

導入Mysql
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品一区久久久久久 | 天天摸天天干 | 欧美日韩亚洲视频 | 亚洲综合天堂网 | 免费一区二区三区 | 日韩成人性视频 | 欧美日本高清 | 日日夜夜免费精品视频 | 91欧美精品 | 亚洲一区免费 | 精品欧美激情在线观看 | 久操av在线 | 成人深夜福利网站 | 91久久久久久久久久久久久 | 妞干网视频| 天天综合亚洲 | 一级在线免费观看 | 久久精品免费一区二区三 | 自拍视频国产 | 毛片黄片免费看 | 国产精品a一区二区三区网址 | 精品国产18久久久久久二百 | 亚洲激情综合网 | 亚洲一区二区三区免费在线观看 | 日p视频免费看 | 日中文字幕在线 | 国产精品久久国产精品 | 久久久久国产精品www | 日本在线看片 | 国产一区二区三区四区五区加勒比 | 国产精品久久久久久久免费大片 | 欧美日韩在线免费观看 | 国产精品久久久久久久久免费软件 | 中文字幕不卡在线观看 | 亚洲精品888 | 成人精品一区亚洲午夜久久久 | 欧美一区二区三区在线 | 一区欧美 | 成人高潮片免费视频欧美 | 久久成人国产 | 国产成人综合一区二区三区 |