vc連接access數據庫及數據表基本操作

1.建立基本對話框

在類中新建兩個變量CString m_strName; CString m_strPassword;

Cfinancial_sysDlg::Cfinancial_sysDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(Cfinancial_sysDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
m_strName = _T("娛樂");
m_strPassword = _T("123");

CoInitialize(NULL);
}

void Cfinancial_sysDlg::DoDataExchange(CDataExchange* pDX)

{
CDialogEx::DoDataExchange(pDX);
DDX_Text(pDX, IDC_name1, m_strName);
DDV_MaxChars(pDX,m_strName,8);
DDX_Text(pDX, IDC_password1, m_strPassword);
DDV_MaxChars(pDX,m_strPassword,8);
}

2.ado方法連接數據庫

在stdafx.h中添加

#import "msado15.dll" no_namespace rename("EOF","adoEOF")

在financial_sysDlg.h 中添加變量_ConnectionPtr pConn;  用來連接數據庫的對象

class Cfinancial_sysDlg : public CDialogEx
{
// 構造
public:
Cfinancial_sysDlg(CWnd* pParent = NULL);// 標準構造函數
        .......
        _ConnectionPtr pConn;

.........

}


在Cfinancial_sysDlg.cpp中 的構造函數中添加如下代碼:

Cfinancial_sysDlg::Cfinancial_sysDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(Cfinancial_sysDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
m_strName = _T("娛樂");
m_strPassword = _T("123");
CoInitialize(NULL);
}

並在析構函數中添加

Cfinancial_sysDlg::~Cfinancial_sysDlg()
{
pConn->Close();
pConn.Release();
};

在financial_sysDlg.h 中定義析構函數

class Cfinancial_sysDlg : public CDialogEx
{
// 構造
public:
Cfinancial_sysDlg(CWnd* pParent = NULL);// 標準構造函數
        .......
~Cfinancial_sysDlg();

.........

}

3.登錄按鈕與登錄界面中輸入的用戶名和密碼進行對比,以保證正常登錄

UpdateData(TRUE);
CString strConnect;
 strConnect =_T("Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+m_strName+".mdb;persist security info=false;Jet OLEDB:Database Password="+m_strPassword+"");
HRESULT hr;
hr = pConn.CreateInstance("ADODB.Connection");
       try
       {   
          if(SUCCEEDED(hr))
 {
            pConn->ConnectionTimeout = 15;                          //設置連接時間
   pConn->Open(_bstr_t(strConnect),"","",adModeUnknown);     //連接SQL SERVER


//char *pMessage;
//pMessage="連接數據庫成功";
CString Message;
            Message.Format(_T("連接數據庫成功"));
            AfxMessageBox(Message);
 }
 else
 {
 CString Message;
            Message.Format(_T("ADO對象實例化失敗"));
            AfxMessageBox(Message);
 }
 
 
       }
       catch(_com_error e)  //捕捉異常
      {
  CString errMessage;
           errMessage.Format(_T("連接數據庫失敗!\r\n錯誤信息:%s"),
           (LPCTSTR)e.Description(),
           (LPCTSTR)e.ErrorMessage());   
           AfxMessageBox(errMessage);
       } 

4.access數據庫操作

定義

_variant_t aacs;
CString acs;

操作

//--------插入數據
acs="INSERT INTO 表1(ID,name,age) VALUES (10,'liala',25)";
pConn->Execute((_bstr_t)acs, &aacs, adCmdUnknown);
AfxMessageBox("數據插入成功");
//--------刪除數據
  acs="delete from 表1 where ID=10";
pConn->Execute((_bstr_t)acs, &aacs, adCmdUnknown);
AfxMessageBox("數據刪除成功");
//--------更新數據
  acs="update 表1 set name='李四' where ID=3";
pConn->Execute((_bstr_t)acs, &aacs, adCmdUnknown);
AfxMessageBox("數據更新成功");
//--------建表
    acs="create table 表3(age SmallInt,hight Float,birthday DateTime)";
pConn->Execute((_bstr_t)acs, &aacs, adCmdUnknown);
AfxMessageBox("表3建立成功");
//--------表加字段    
acs="alter table 表3 add column name1 Text";
pConn->Execute((_bstr_t)acs, &aacs, adCmdUnknown);
AfxMessageBox("表3加字段成功");
//--------表刪字段
acs="alter table 表3 drop column name1 ";
pConn->Execute((_bstr_t)acs, &aacs, adCmdUnknown);
AfxMessageBox("表3刪除字段成功");
//--------刪表
acs="drop table 表3";
pConn->Execute((_bstr_t)acs, &aacs, adCmdUnknown);
AfxMessageBox("表3刪除成功");






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章