導航:首頁 > 編程語言 > mfcado資料庫編程

mfcado資料庫編程

發布時間:2023-06-17 12:23:59

㈠ 請教:MFC多線程資料庫編程ado,資料庫訪問沖突。

用多線程同步技術,即一個線程將要取得數據區鎖定,另一個線程此時不能存取此塊的數據。
看看多線程同步的書。

例如:
void CCalibPage1::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
UpdateData();

m_nCounter++;

double r;

CSingleLock sLock(&(gpMainFrm->m_mutex));
sLock.Lock();//此處鎖定
double v = gSpindleRevolution;
sLock.Unlock();//存取後釋放。

if(m_bCalibStart)
{
r = m_CalibValue/v;

m_szTestValue0.Format("%f",v);
// m_szTestValue.Format("%f", (v * r));
m_szRatio.Format("%f", r);//
UpdateData(false);
}
else if(m_bVerify)
{
m_szTestValue.Format("%f",v*gcConfig.calib[PCL833_CHANNEL].ratio);
UpdateData(false);
}

if(m_nCounter > 30)
{
KillTimer(11);
m_bCalibStart = false;
m_bVerify = false;
MessageBox(_T("標定完成!"),_T("CNCTest"));
UpdateButtonStatus();
}

CPropertyPage::OnTimer(nIDEvent);
}

參見:
http://ke..com/view/2808915.htm

㈡ 如何進行MFC資料庫編程

MFC資料庫編程包含如下:
首先,你要選擇使用什麼方式連接資料庫,有ODBC,ADO等,
其他,就是sql語句操作資料庫了,對後是怎麼存儲操作數據。

㈢ 資料庫編程用ADO好,還是ODBC好

這要看具體情況,如果對資料庫的底層訪問很看重,則用ODBC,如果只是需要一個資料庫的介面,而具體細節不是很重要的話,則用ADO。大多數情況下,使用ADO。
ODBC:
直接使用ODBC API編寫應用程序需要編制大量代碼,Visual C++提供了MFC ODBC類,其中封裝了ODBC API,因此,使用MFC來創建ODBC的應用程序非常簡便。主要的MFC ODBC類如下所示。
CDatabase類:一個CDatabase對象表示一個到數據源的連接,通過它可以操作數據源。應用程序可使用多個CDatabase對象,構造一個對象並調用OpenEx()成員函數打開一個連接。接著構造CRecordSet對象以操作連接的數據源,並向 CDatabase對象傳遞記錄集構造程序指針。完成後用Close()成員函數銷毀CDatabase對象。一般情況下並不需要直接使用CDatabase對象,因為CRecordSet對象可以實現大多數的功能。但是在進行事務處理時,CDatabase就起到關鍵作用。事務(Transaction)指的是將一系列對數據源的更新放在一起,同時提交或一個也不提交,為的是確保多用戶對數據源同時操作時的數據正確性。
CRecordSet類:一個CRecordSet對象代表一個從數據源選擇的一組記錄的集合——記錄集。記錄集有兩種形式,snapshot和dynaset,前者表示數據的靜態試圖,後者表示記錄集和其他用戶對資料庫的更新保持同步。通過CRecordSet對象,用戶可以對資料庫中的記錄進行各種操作。
CRecordView類:CRecordView對象是在空間中顯示資料庫記錄的視圖。這種視圖是一種直接連到CRecordSet對象的格式視圖,它從一個對話框模板資源創建,並將CRecordSet對象的欄位顯示在對話框模板的控制項中。對象利用DDX和RFX機制,使格式上的控制項和記錄集的欄位之間數據移動自動化,也就是說,用戶不用編寫一行代碼就可以實現簡單的資料庫記錄查看操作。
CDBException:由Cexception類派生,以3個繼承的成員變數反映對資料庫操作時的異常。
m_nRetCode:以ODBC返回代碼(SQL_RETURN)的形式表明造成異常的原因。
m_strError:字元串,描述造成拋出異常的錯誤原因。
m_strStateNativeOrigin:字元串,用以描述以ODBC錯誤代碼表示的異常錯誤。
MFC資料庫類成員函數都能拋出CDBException類型異常,所以在代碼對資料庫進行操作後監測異常是正確的做法。
ADO:
ADO技術是基於OLE DB的訪問介面,它繼承了OLE DB技術的優點,並且,ADO對OLE DB的介面作了封裝,定義了ADO對象,使程序開發得到簡化。ADO技術屬於資料庫訪問的高層介面。ADO基於COM,提供編程語言可利用的對象,除了面向VC++,還提供面向其他各種開發工具的應用,如VB、VJ等。ADO在伺服器應用方面非常有效,特別是對於動態伺服器頁面(ASP,Active Server Page)的支持。
ADO對象結構類似於OLE DB,但並不依靠對象層次。大多數情況下,用戶只需要創建並使用需要處理的對象。ADO 最主要的優點是易於使用、速度快、內存支出少和磁碟遺跡小。ADO 在關鍵的應用方案中使用最少的網路流量,並且在前端和數據源之間使用最少的層數,所有這些都是為了提供輕量、高性能的介面。下面的對象類組成了ADO介面。
Connection:用於表示與資料庫的連接,以及處理一些命令和事務。
Command:用於處理傳送給數據源的命令。
Recordset:用於處理數據的表格集,包括獲取和修改數據。
Field:用於表示記錄集中的列信息,包括列值和其他信息。
Parameter:在傳送給數據源的命令之間傳遞數據。
Property:用於操作在ADO中使用的其他對象的詳細屬性。
Error:用於獲得可能發生的詳細錯誤信息。

㈣ MFC編程用ADO連接資料庫,執行查詢語句後,如果返回0條記錄有什麼標志嗎

if ((m_pRecordset->BOF)||(m_pRecordset->adoEOF))
{
// AfxMessageBox("沒有記錄");
return;
}

㈤ ADO+MFC資料庫編程時,修改記錄和插入記錄的代碼各條語句的意思

1. // 這個Open函數的第二個參數為什麼和
答:你這里不都是一樣的嗎?

2.m_pRecordset->AddNew(); //為什麼要這一句呢?是提示程序要添加新的記錄了嗎?
答:不是提示,這個是讓表添加一個新行。

3.m_pRecordset->PutCollect("name", _variant_t(m_Name)); // 這里的PutCollect函數的作用是什麼?
答:put 放入的意思。這里是把m_Name值放入表中的name欄位中。

4.m_pRecordset->MoveFirst(); // 這一句和下面的Move有什麼作用??
答:m_pRecordset表示記錄集。MoveFirst移動指針到記錄集中的第一行。
Move(cursel);移動到cursel)行。

5.m_pRecordset->PutCollect("age", atol(m_Age)); //為什麼這里的強制轉換是用atol,而不是用上面的_variant_t ???
答:因為在表中聲明的age是long類型。放入數據時類型要一致。

閱讀全文

與mfcado資料庫編程相關的資料

熱點內容
為什麼安卓車載中控屏看起來很差 瀏覽:464
吃雞怎麼解壓最快 瀏覽:966
linux網路編程基礎 瀏覽:217
產研是程序員嗎 瀏覽:592
程序員的法律 瀏覽:967
編程第四關用冰雪火焰閃現通關 瀏覽:754
批處理當前文件夾參數 瀏覽:183
鴻蒙安卓如何下載 瀏覽:902
開3389命令 瀏覽:540
程序員大都單純嗎 瀏覽:913
APP如何實現下載功能 瀏覽:214
通達信源碼怎樣放到桌面 瀏覽:643
程序員的腦袋會禿嗎 瀏覽:453
為什麼eve登錄啟動不進去伺服器 瀏覽:270
微信招生app哪個好用 瀏覽:233
寶可夢劍盾啟動文件在哪個文件夾 瀏覽:765
壓縮機比容 瀏覽:117
python自動化測試面試 瀏覽:949
買便宜點的鞋子去哪個app買 瀏覽:890
android中個人頁面 瀏覽:711