日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
使用MFC訪問(wèn)Access數(shù)據(jù)庫(kù)的方法和技巧(mfcaccess數(shù)據(jù)庫(kù))

隨著信息技術(shù)的發(fā)展,計(jì)算機(jī)的應(yīng)用范圍越來(lái)越廣泛。在日常開(kāi)發(fā)過(guò)程中,訪問(wèn)數(shù)據(jù)庫(kù)已經(jīng)成為程序員經(jīng)常需要進(jìn)行的操作。Microsoft Foundation Classes(MFC)是一個(gè)被廣泛使用的C++類(lèi)庫(kù),用于開(kāi)發(fā)Windows應(yīng)用程序。而Access數(shù)據(jù)庫(kù)是微軟開(kāi)發(fā)的一款關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),通過(guò)MFC訪問(wèn)Access數(shù)據(jù)庫(kù),可以實(shí)現(xiàn)程序和數(shù)據(jù)庫(kù)之間的數(shù)據(jù)交互,本文將介紹。

成都創(chuàng)新互聯(lián)是一家專(zhuān)業(yè)提供饒平企業(yè)網(wǎng)站建設(shè),專(zhuān)注與成都網(wǎng)站制作、做網(wǎng)站、H5開(kāi)發(fā)、小程序制作等業(yè)務(wù)。10年已為饒平眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。

一、創(chuàng)建Access數(shù)據(jù)庫(kù)

首先需要?jiǎng)?chuàng)建一個(gè)Access數(shù)據(jù)庫(kù),可以使用Access自帶的向?qū)?chuàng)建數(shù)據(jù)庫(kù),也可以使用代碼創(chuàng)建。以下是使用代碼創(chuàng)建數(shù)據(jù)庫(kù)的步驟:

1. 定義一個(gè)數(shù)據(jù)庫(kù)連接變量

CDatabase db;

2. 打開(kāi)數(shù)據(jù)庫(kù)

db.Open(NULL,false,false,_T(“ODBC;DSN=MS Access Database;DBQ=d:\\test.mdb”));

其中,ODBC為數(shù)據(jù)源名,DSN為數(shù)據(jù)源名,DBQ為數(shù)據(jù)庫(kù)文件路徑,可以根據(jù)自己的需要進(jìn)行修改。

二、向Access數(shù)據(jù)庫(kù)中添加、讀取數(shù)據(jù)

連接上數(shù)據(jù)庫(kù)之后,就可以進(jìn)行添加、讀取、修改、刪除等操作。以下是添加數(shù)據(jù)的示例:

1. 定義一個(gè)記錄集變量

CRecordset rs(&db);

2. 打開(kāi)記錄集對(duì)象

rs.Open(CRecordset::dynaset,_T(“select * from student”),CRecordset::none);

其中,student為表格名稱(chēng)。

3. 定義一個(gè)記錄

rs.AddNew();

4. 向記錄中添加數(shù)據(jù)

rs.SetFieldValue(_T(“ID”),1);

rs.SetFieldValue(_T(“Name”),_T(“Tom”));

rs.SetFieldValue(_T(“Age”),18);

5. 提交記錄

rs.Update();

通過(guò)以上步驟就可以向Access數(shù)據(jù)庫(kù)中添加數(shù)據(jù),同樣可以通過(guò)修改將數(shù)據(jù)進(jìn)行修改或者刪除。以下是讀取數(shù)據(jù)的示例:

1. 定義一個(gè)記錄集變量

CRecordset rs(&db);

2. 打開(kāi)記錄集對(duì)象,并執(zhí)行查詢(xún)語(yǔ)句

rs.Open(CRecordset::dynaset,_T(“select * from student”),CRecordset::none);

其中,student為表格名稱(chēng)。

3. 循環(huán)讀取記錄

while(!rs.IsEOF())

{

int nID;

CString strName;

int nAge;

rs.GetFieldValue(_T(“ID”),nID);

rs.GetFieldValue(_T(“Name”),strName);

rs.GetFieldValue(_T(“Age”),nAge);

//輸出讀取到的記錄

printf(“ID:%d,Name:%s,Age:%d”,nID,strName,nAge);

rs.MoveNext();

}

通過(guò)以上步驟就可以從Access數(shù)據(jù)庫(kù)中讀取數(shù)據(jù),同樣可以通過(guò)查詢(xún)語(yǔ)句的修改將查詢(xún)到的數(shù)據(jù)進(jìn)行修改或者刪除。

在程序開(kāi)發(fā)過(guò)程中,訪問(wèn)數(shù)據(jù)庫(kù)是常常需要進(jìn)行的操作。使用MFC訪問(wèn)Access數(shù)據(jù)庫(kù)可以實(shí)現(xiàn)程序和數(shù)據(jù)庫(kù)之間的數(shù)據(jù)交互,具有靈活、高效、快速等特點(diǎn)。通過(guò)以上示例,可以看出訪問(wèn)Access數(shù)據(jù)庫(kù)的方法和技巧并不復(fù)雜,只要按照以上步驟進(jìn)行操作,就可以實(shí)現(xiàn)對(duì)Access數(shù)據(jù)庫(kù)的讀取、修改、添加、刪除等操作。同時(shí),在使用過(guò)程中也需要注意一些技巧,比如定期進(jìn)行數(shù)據(jù)庫(kù)備份、設(shè)置適當(dāng)?shù)乃饕?,以提高程序的穩(wěn)定性和性能。

成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗(yàn)豐富以策略為先導(dǎo)10多年以來(lái)專(zhuān)注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站制作,設(shè)計(jì)師量身打造品牌風(fēng)格,熱線:028-86922220

MFC 如何查詢(xún)Access不同數(shù)據(jù)庫(kù)不同表的數(shù)據(jù)

ADO技術(shù)

//打開(kāi)數(shù)據(jù)庫(kù)

CADODatabase Cdb;

CString strCon = m_strDBCon;

BOOL bRet = Cdb.Open(strCon);

if (!bRet)

{

MessageBox(“連接數(shù)據(jù)庫(kù)出錯(cuò)!\r\n請(qǐng)確定程序目錄是否有MDB文件!”,MSG_TS,MB_ICONERROR);

return FALSE;

}

CString strQuerySQL;

strQuerySQL.Format(_T(“SELECT * FROM T_NormalTpt WHERE GroupID = %d AND Barcode = ‘%s’ ORDER BY TestDate DESC,Barcode ASC”),1,_T(“222”));//查詢(xún)語(yǔ)句

CADORecordset cRe(&Cdb);

bRet=cRe.Open(strQuerySQL,cRe.openQuery);

if (!bRet)

{

MessageBox(“讀取數(shù)據(jù)庫(kù)記錄失敗!”,MSG_TS,MB_ICONERROR);

Cdb.Close();

return 0;

}

int nRcount 判腔= 0;//記錄總數(shù)

nRcount = cRe.GetRecordCount();

CString strGroupID,strCurrentNo,strBarCode,strElecCode,strSensor,strTemperature;

CString strTmp,strmA4,strmA20,strTestDate,strTester,strErrorCode,strDescription;

double dTemp;

while(!cRe.IsEof())

{

cRe.GetFieldValue(_T(“GroupID”),strGroupID);//得到文本

cRe.GetFieldValue(_T(“CurrentNo”),strCurrentNo);

cRe.GetFieldValue(_T(“ElecCode”),strElecCode);

cRe.GetFieldValue(_T(“Barcode”罩沖森),strBarCode);

cRe.GetFieldValue(_T(“Sensor”),dTemp);//得到double類(lèi)型

strSensor.Format(_T(“物畝%.4f”),dTemp);

cRe.GetFieldValue(_T(“Temperature”),dTemp);

strTemperature.Format(_T(“%.4f”),dTemp);

cRe.GetFieldValue(_T(“ElectricCurrent4”),dTemp);

strmA4.Format(_T(“%.4f”),dTemp);

cRe.GetFieldValue(_T(“ElectricCurrent20”),dTemp);

strmA20.Format(_T(“%.4f”),dTemp);

cRe.GetFieldValue(_T(“TestDate”),strTestDate);

cRe.GetFieldValue(_T(“Tester”),strTester);

cRe.GetFieldValue(_T(“ErrorCode”),strErrorCode);

cRe.GetFieldValue(_T(“ErrorRes”),strDescription);

cRe.MoveNext();

}

//關(guān)閉數(shù)據(jù)庫(kù)

cRe.Close();

Cdb.Close();

MFC通過(guò)ADO操作Access數(shù)據(jù)庫(kù)

vc 可以訪問(wèn)很多數(shù)據(jù)庫(kù),比如Access、SQL servel、MYSql、Orcal等數(shù)據(jù)庫(kù)系統(tǒng)。也有很多數(shù)據(jù)庫(kù)訪問(wèn)技術(shù),比如ADO、ODBC、OLE DB等。每一種數(shù)據(jù)庫(kù)系統(tǒng)都提供了一系列的API,在程序中可以通過(guò)編碼的形式調(diào)用相應(yīng)的API進(jìn)而對(duì)數(shù)據(jù)庫(kù)操作。

你學(xué)一個(gè)vc++訪問(wèn)ADO數(shù)據(jù)庫(kù)吧,難點(diǎn),但是很則租實(shí)用!

1、導(dǎo)入ADO庫(kù)

#import “c:\Program Files\Common Files\System\ADO\msado15.dll”孫螞兆 no_namespace rename(“EOF”, “adoEOF”)

2、用導(dǎo)入的動(dòng)態(tài)庫(kù)的指針操作數(shù)據(jù)庫(kù).

打開(kāi)數(shù)據(jù)庫(kù)連接

_ConnectionPtr m_pConn; // 數(shù)據(jù)庫(kù)連接指針

// 創(chuàng)建Conneciton對(duì)象

m_pConn.CreateInstance(_T(“ADODB.Connection”));

用ConnectionPtr 的open方法m_pConn->Open(_bstr_t(m_sConn),

_T(“”), _T(“”), lOptions));

m_sConn為你連接數(shù)據(jù)庫(kù)的信息,你應(yīng)該按照你的要求打開(kāi)數(shù)據(jù)庫(kù),他里面包含了你的物爛Access數(shù)據(jù)庫(kù)的路徑、名稱(chēng)等待信息,,,是一個(gè)通用的字符串。

然后你用打開(kāi)的那個(gè)連接進(jìn)行操作數(shù)據(jù)庫(kù)。比如

_RecordsetPtr pRec = m_pConn->Execute(_bstr_t(pszSql), NULL, CmdText);

pszSql 就你要操作數(shù)據(jù)庫(kù)的SQL語(yǔ)句。在這個(gè)SQL語(yǔ)句里你可以創(chuàng)建表、更新表等。

用ADO訪問(wèn)的時(shí)候要求初始他COM庫(kù)和釋放COM對(duì)象

// 初始化COM環(huán)境(庫(kù))

::CoInitialize(NULL);

//釋放COM對(duì)象

::CoUninitialize();

// DbTestDlg.cpp : 實(shí)現(xiàn)文件

//

#include “stdafx.h”

#include “DbTest.h”

#include “DbTestDlg.h”

#include “Resource.h”

#ifdef _DEBUG

#define new DEBUG_NEW

#endif

// 用于應(yīng)用程序“關(guān)于”菜單項(xiàng)的 CAboutDlg 對(duì)明者話框

class CAboutDlg : public CDialog

{

public:

CAboutDlg();

// 對(duì)話框數(shù)據(jù)

enum { IDD = IDD_ABOUTBOX };

protected:

virtual void DoDataExchange(CDataExchange* pDX); //激者薯 DDX/DDV 支持

// 實(shí)現(xiàn)

protected:

DECLARE_MESSAGE_MAP()

};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)

{

}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)

END_MESSAGE_MAP()

// CDbTestDlg 對(duì)話框

CDbTestDlg::CDbTestDlg(CWnd* pParent /*=NULL*/)

: CDialog(CDbTestDlg::IDD, pParent)

,m_strId(_T(“”))

, m_strName(_T(“”))

{

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}

void CDbTestDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

DDX_Text(pDX,IDC_EDIT_ID,m_strId);

DDX_Text(pDX,IDC_EDIT_NAME,m_strName);

}

BEGIN_MESSAGE_MAP(CDbTestDlg, CDialog)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

//}}AFX_MSG_MAP

ON_BN_CLICKED(IDOK, &CDbTestDlg::OnBnClickedOk)

ON_BN_CLICKED(IDC_BUTTON1, &CDbTestDlg::OnBnClickedButton1)

ON_BN_CLICKED(IDC_BUTTON2, &CDbTestDlg::OnBnClickedButton2)

ON_BN_CLICKED(IDC_BUTTON3, &CDbTestDlg::OnBnClickedButton3)

END_MESSAGE_MAP()

// CDbTestDlg 消息處理程序

BOOL CDbTestDlg::OnInitDialog()

{

CDialog::OnInitDialog();

// 將“關(guān)于…”菜單項(xiàng)添加到系統(tǒng)菜單中。

// IDM_ABOUTBOX 必須在系統(tǒng)命令范圍內(nèi)。

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

}

}

// 設(shè)置此對(duì)話框的圖標(biāo)。當(dāng)應(yīng)用程序主窗口不嫌鋒是對(duì)話框時(shí),框架將自動(dòng)

// 執(zhí)行此操作

SetIcon(m_hIcon, TRUE); // 設(shè)置大圖標(biāo)

SetIcon(m_hIcon, FALSE); // 設(shè)置小圖標(biāo)

// TODO: 在此添加額外的初始化代碼

m_pConnection.CreateInstance(_T(“ADODB.Connection”));

CString sql;

sql.Format(_T(“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Employee.mdb”));

m_pConnection->Open((_bstr_t)sql,_T(“”),_T(“”),adModeUnknown);

return TRUE; // 除非將焦點(diǎn)設(shè)置到控件,否則返回 TRUE

}

void CDbTestDlg::OnSysCommand(UINT nID, LPARAM lParam)

{

if ((nID & 0xFFF0) == IDM_ABOUTBOX)

{

CAboutDlg dlgAbout;

dlgAbout.DoModal();

}

else

{

CDialog::OnSysCommand(nID, lParam);

}

}

// 如果向?qū)υ捒蛱砑幼钚』粹o,則需要下面的代碼

// 來(lái)繪制該圖標(biāo)。對(duì)于使用文檔/視圖模型的 MFC 應(yīng)用程序,

// 這將由框架自動(dòng)完成。

void CDbTestDlg::OnPaint()

{

if (IsIconic())

{

CPaintDC dc(this); // 用于繪制的設(shè)備上下文

SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc()), 0);

// 使圖標(biāo)在工作矩形中居中

int cxIcon = GetSystemMetrics(_CXICON);

int cyIcon = GetSystemMetrics(_CYICON);

CRect rect;

GetClientRect(&rect);

int x = (rect.Width() – cxIcon + 1) / 2;

int y = (rect.Height() – cyIcon + 1) / 2;

// 繪制圖標(biāo)

dc.DrawIcon(x, y, m_hIcon);

}

else

{

CDialog::OnPaint();

}

}

//當(dāng)用戶拖動(dòng)最小化窗口時(shí)系統(tǒng)調(diào)用此函數(shù)取得光標(biāo)顯示。

//

HCURSOR CDbTestDlg::OnQueryDragIcon()

{

return static_cast(m_hIcon);

}

void CDbTestDlg::OnBnClickedOk()

{

// TODO: 在此添加控件通知處理程序代碼

//OnOK();

UpdateData();

CString sql;

m_pRecord.CreateInstance(_T(“ADODB.Recordset”));

sql.Format(_T(“SELECT * FROM WHERE id = ‘%s’ ORDER BY .id”),m_strId);

m_pRecord->Open(_bstr_t(sql),

_variant_t((IDispatch*)m_pConnection,true),

adOpenDynamic,adLockOptimistic,adCmdText);

_variant_t varId,varName;

varName = m_pRecord->GetCollect(_T(“name”));

m_strName = (TCHAR *)_bstr_t(varName);

UpdateData(FALSE);

}

void CDbTestDlg::OnBnClickedButton1()//添加

{

// TODO: 在此添加控件通知處理程序代碼

UpdateData();

CString sql;

m_pRecord.CreateInstance(_T(“ADODB.Recordset”));

sql.Format(_T(“SELECT * FROM WHERE id = ‘%s’ ORDER BY .id”),m_strId);

m_pRecord->Open(_bstr_t(sql),

_variant_t((IDispatch*)m_pConnection,true),

adOpenDynamic,adLockOptimistic,adCmdText);

try

{

// 寫(xiě)入各字段值

m_pRecord->AddNew();

m_pRecord->PutCollect(“id”, _variant_t(m_strId));

m_pRecord->PutCollect(“name”, _variant_t(m_strName));

m_pRecord->Update();

AfxMessageBox(_T(“添加成功!”));

}

catch(_com_error *e)

{

AfxMessageBox(e->ErrorMessage());

}

UpdateData(FALSE);

}

void CDbTestDlg::OnBnClickedButton2()//修改

{

// TODO: 在此添加控件通知處理程序代碼

UpdateData();

CString sql;

m_pRecord.CreateInstance(_T(“ADODB.Recordset”));

sql.Format(_T(“SELECT * FROM WHERE id = ‘%s’ ORDER BY .id”),m_strId);

m_pRecord->Open(_bstr_t(sql),

_variant_t((IDispatch*)m_pConnection,true),

adOpenDynamic,adLockOptimistic,adCmdText);

try

{

// 假設(shè)對(duì)第二條記錄進(jìn)行修改

m_pRecord->MoveFirst();

m_pRecord->Move(1);// 從0開(kāi)始

m_pRecord->PutCollect(“id”, _variant_t(m_strId));

m_pRecord->PutCollect(“name”, _variant_t(m_strName));

m_pRecord->Update();

AfxMessageBox(_T(“修改成功!”));

}

catch(_com_error *e)

{

AfxMessageBox(e->ErrorMessage());

}

UpdateData(FALSE);

}

void CDbTestDlg::OnBnClickedButton3()//刪除

{

// TODO: 在此添加控件通知處理程序代碼

UpdateData();

CString sql;

m_pRecord.CreateInstance(_T(“ADODB.Recordset”));

sql.Format(_T(“SELECT * FROM WHERE id = ‘%s’ ORDER BY .id”),m_strId);

m_pRecord->Open(_bstr_t(sql),

_variant_t((IDispatch*)m_pConnection,true),

adOpenDynamic,adLockOptimistic,adCmdText);

try

{

// 假設(shè)刪除第二條記錄

m_pRecord->MoveFirst();

m_pRecord->Move(1);// 從0開(kāi)始

m_pRecord->Delete(adAffectCurrent); // 參數(shù)adAffectCurrent為刪除當(dāng)前記錄

m_pRecord->Update();

AfxMessageBox(_T(“刪除成功!”));

}

catch(_com_error *e)

{

AfxMessageBox(e->ErrorMessage());

}

UpdateData(FALSE);

mfc無(wú)法將數(shù)據(jù)寫(xiě)入access數(shù)據(jù)庫(kù)

先建立一個(gè)和Data.mdb數(shù)據(jù)庫(kù)的連接(connection),然后才能執(zhí)行SQL語(yǔ)句建立表。

mfc access 數(shù)據(jù)庫(kù)的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于mfc access 數(shù)據(jù)庫(kù),使用MFC訪問(wèn)Access數(shù)據(jù)庫(kù)的方法和技巧,MFC 如何查詢(xún)Access不同數(shù)據(jù)庫(kù)不同表的數(shù)據(jù),MFC通過(guò)ADO操作Access數(shù)據(jù)庫(kù),mfc無(wú)法將數(shù)據(jù)寫(xiě)入access數(shù)據(jù)庫(kù)的信息別忘了在本站進(jìn)行查找喔。

成都創(chuàng)新互聯(lián)科技有限公司,經(jīng)過(guò)多年的不懈努力,公司現(xiàn)已經(jīng)成為一家專(zhuān)業(yè)從事IT產(chǎn)品開(kāi)發(fā)和營(yíng)銷(xiāo)公司。廣泛應(yīng)用于計(jì)算機(jī)網(wǎng)絡(luò)、設(shè)計(jì)、SEO優(yōu)化、關(guān)鍵詞排名等多種行業(yè)!


分享文章:使用MFC訪問(wèn)Access數(shù)據(jù)庫(kù)的方法和技巧(mfcaccess數(shù)據(jù)庫(kù))
文章來(lái)源:http://www.5511xx.com/article/ccsspjo.html