程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> VC++數據庫通用模塊開發:數據顯示

VC++數據庫通用模塊開發:數據顯示

編輯:vc教程

  (1) 使用MFC App Wizard(exe)新建一個基於對話框(Dialog based)類型的應用程序,命名為Data_Disp2。

  (2) 選擇Project | Add to Project | Components and Controls命令,在彈出的Components and Controls Gallery對話框中選擇Registered ActiveX Controls文件夾,如圖4-12所示。

  單擊Insert按鈕,在彈出的Components and Controls Gallery對話框中選擇Microsoft DataGrid Control,Vision6.0(OLEDB)控件,如圖4-13所示。

  單擊Insert按鈕,在彈出的Confirm Classes對話框中選擇要添加的子類。如圖4-14所示。單擊OK按鈕後,DataGrid控件就添加到控件工具條上,如圖4-15所示。             

  至此,DataGrid控件就添加到工程中。

  (3) 將DataGrid控件拖入對話框界面,修改其ID為ID_DATAGRID_TEST,如圖4-16所示。 

  為ID_DATAGRID_TEST添加一個變量,如下所示。

  CDataGrid  m_dbTest;

  (4) 使用Access創建數據庫來存儲數據,數據庫名為DataDisp2.mdb,它包含表BALANCE。在BALANCE表中存儲的是“個人收支情況”的基本信息,其結構及字段說明如表4-4所示。

  (5) 在對話框類的頭文件Data_Disp2Dlg.h中添加下面語句。

  #import "c:program filescommon filessystemadomsado15.dll" no_namespace

  rename("EOF","adoEOF")

  在對話框類中添加數據庫連接對象和數據集對象,如下所示。

  _ConnectionPtr m_pConnection;

  _RecordsetPtr  m_pRecordset;

  在對話框類中引用DataGrid控件的子類頭文件,如下所示。

  #include "Columns.h"

  #include "Column.h"

  在對話框類的初始化函數中連接數據庫與數據集,將指定數據集綁定到m_dbTest,並設置列寬和列頭,將數據顯示出來。

BOOL CData_Disp2Dlg::OnInitDialog()
  {
    CDialog::OnInitDialog();
    // Add "About..." menu item to system menu.
    // IDM_ABOUTBOX must be in the system command range.
    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    ASSERT(IDM_ABOUTBOX < 0xF000);
    CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu != NULL)
    {
      CString strAboutMenu;
      strAboutMenu.LoadString(IDS_ABOUTBOX);
      if (!strAboutMenu.IsEmpty())
      {
        pSysMenu->AppendMenu(MF_SEPARATOR);
        pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
      }
    }
    // Set the icon for this dialog. The framework does this automatically
    // when the application's main window is not a dialog
    SetIcon(m_hIcon, TRUE);   // Set big icon
    SetIcon(m_hIcon, FALSE);    // Set small icon
    //初始化數據庫連接
    m_pConnection.CreateInstance("ADODB.Connection");
    //連接數據庫
    try
    {

     //超時檢查
      m_pConnection->ConnectionTimeout = 8;
      m_pConnection->PutCursorLocation(adUseClIEnt);
      m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0; Data
  Source=DataDisp2.mdb", "", "", adModeUnknown);
    }
    catch(_com_error e)
    {
      AfxMessageBox("數據庫連接失敗!");
      return FALSE;
    }
    try
    {
  //初始化記錄集對象
  m_pRecordset.CreateInstance("ADODB.Recordset");
  //打開記錄集
      m_pRecordset->Open("SELECT * FROM BALANCE",_variant_t((IDispatch
  *)m_pConnection,true), adOpenDynamic, adLockPessimistic, adCmdText);
    } 
    catch(_com_error e)//捕捉異常
{
      CString temp;
      temp.Format("aaa連接數據庫錯誤信息:%s",e.ErrorMessage());
      AfxMessageBox(temp);
      return 0;
    }
  //綁定數據源
    m_dbTest.SetRefDataSource(NULL);
    m_dbTest.SetRefDataSource((LPUNKNOWN)m_pRecordset);
    m_dbTest.SetColumnHeaders(2) ;
  //設置列寬與列頭
    _variant_t vIndex;
    vIndex = long(0);
    m_dbTest.GetColumns().GetItem(vIndex).SetWidth(50);
    m_dbTest.GetColumns().GetItem(vIndex).SetCaption("姓名");
    vIndex = long(1);
    m_dbTest.GetColumns().GetItem(vIndex).SetWidth(50);
    m_dbTest.GetColumns().GetItem(vIndex).SetCaption("收入");
    vIndex = long(2);
    m_dbTest.GetColumns().GetItem(vIndex).SetWidth(50);
    m_dbTest.GetColumns().GetItem(vIndex).SetCaption("支出");
    vIndex = long(3);
    m_dbTest.GetColumns().GetItem(vIndex).SetWidth(30);
    m_dbTest.GetColumns().GetItem(vIndex).SetCaption("余額");
    vIndex = long(4);
    m_dbTest.GetColumns().GetItem(vIndex).SetWidth(30);
    m_dbTest.GetColumns().GetItem(vIndex).SetCaption("時間");
  //顯示更新
    m_dbTest.Refresh();
    return TRUE;
  }

  至此就實現用表格顯示數據庫中的數據,但是這個程序的功能很有限,只能顯示數據,不能對表格中的數據進行編輯。接下來介紹幾種常用的表格編輯方法。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved