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

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

新聞中心

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

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

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

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

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

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

CDatabase db;

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

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

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

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

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

1. 定義一個記錄集變量

CRecordset rs(&db);

2. 打開記錄集對象

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

其中,student為表格名稱。

3. 定義一個記錄

rs.AddNew();

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

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

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

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

5. 提交記錄

rs.Update();

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

1. 定義一個記錄集變量

CRecordset rs(&db);

2. 打開記錄集對象,并執(zhí)行查詢語句

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

其中,student為表格名稱。

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();

}

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

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

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

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

ADO技術(shù)

//打開數(shù)據(jù)庫

CADODatabase Cdb;

CString strCon = m_strDBCon;

BOOL bRet = Cdb.Open(strCon);

if (!bRet)

{

MessageBox(“連接數(shù)據(jù)庫出錯!\r\n請確定程序目錄是否有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”));//查詢語句

CADORecordset cRe(&Cdb);

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

if (!bRet)

{

MessageBox(“讀取數(shù)據(jù)庫記錄失敗!”,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類型

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ù)庫

cRe.Close();

Cdb.Close();

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

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

你學(xué)一個vc++訪問ADO數(shù)據(jù)庫吧,難點,但是很則租實用!

1、導(dǎo)入ADO庫

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

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

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

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

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

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

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

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

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

然后你用打開的那個連接進行操作數(shù)據(jù)庫。比如

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

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

用ADO訪問的時候要求初始他COM庫和釋放COM對象

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

::CoInitialize(NULL);

//釋放COM對象

::CoUninitialize();

// DbTestDlg.cpp : 實現(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)于”菜單項的 CAboutDlg 對明者話框

class CAboutDlg : public CDialog

{

public:

CAboutDlg();

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

enum { IDD = IDD_ABOUTBOX };

protected:

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

// 實現(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 對話框

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)于…”菜單項添加到系統(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è)置此對話框的圖標。當應(yīng)用程序主窗口不嫌鋒是對話框時,框架將自動

// 執(zhí)行此操作

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

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

// 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; // 除非將焦點設(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,則需要下面的代碼

// 來繪制該圖標。對于使用文檔/視圖模型的 MFC 應(yīng)用程序,

// 這將由框架自動完成。

void CDbTestDlg::OnPaint()

{

if (IsIconic())

{

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

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

// 使圖標在工作矩形中居中

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;

// 繪制圖標

dc.DrawIcon(x, y, m_hIcon);

}

else

{

CDialog::OnPaint();

}

}

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

//

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

{

// 寫入各字段值

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è)對第二條記錄進行修改

m_pRecord->MoveFirst();

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

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開始

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

m_pRecord->Update();

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

}

catch(_com_error *e)

{

AfxMessageBox(e->ErrorMessage());

}

UpdateData(FALSE);

mfc無法將數(shù)據(jù)寫入access數(shù)據(jù)庫

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

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

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


網(wǎng)頁題目:使用MFC訪問Access數(shù)據(jù)庫的方法和技巧(mfcaccess數(shù)據(jù)庫)
本文URL:http://m.5511xx.com/article/ccsspjo.html