九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
ADO.NET
學了很長一段時間的ADO.Net,知道其強大的數據訪問和操作能力!但是對ado.net的背景卻了解很少。。。

下面引用一下閱讀到得一些知識點:

ADO(ActiveX DataObject的簡稱)是Microsoft為最新和最強大的數據訪問范例OLE DB而設計的,是一個便于使用的應用程序層接口。ADO通過OLEDB提供訪問和操作數據庫服務器中的數據。ADO不僅可以訪問關系型數據庫,還可以訪問非關系型數據庫。同時由于OLEDB是基于COM接口的技術,使用這種技術可以直接對數據庫的驅動程序進行訪問,從而大大提供了訪問速度。與眾多的數據庫編程接口比較,ADO具有易于使用、速度快、內存支出少和磁盤遺跡小等優(yōu)點。

但由于Microsoft并沒有提供有關ADO的類,更不幸的是微軟所提供的ADO文檔幾乎沒有關于Visual C++的內容,這使得Visual C++程序開發(fā)人員要想利用ADO訪問數據庫相對比較麻煩。然而這又是每個VisualC++程序員不可回避的問題。解決這個問題的比較可行的辦法就是自己編寫這個類。本文將介紹如何具體編寫自己的ADO類。

(1)在使用ADO前必須使用#import引入ADO庫文件,其中ADO庫文件的路徑視實際情況而定,同時為了避免常數沖突,通常將常數EOF改名為adoEOF。

#import "c:\program files\commonfiles\system\ado\msado15.dll" no_namespace rename ("EOF","adoEOF")

(2) 在使用ADO之前還必須初始化OLE庫。Visual C++.net已經在CWinApp::InitInstance()中對OLE庫進行了初始化。但是如果使用的Visual C++6.0,則必須初始化OLE庫。

if (!AfxOleInit())
{
    AfxMessageBox(“初始化OLE庫失敗”);
}

(3)ADO庫包含三個智能指針:_ConnectionPtr、_CommandPtr和_RecordsetPtr。_ConnectionPtr通常被用來創(chuàng)建一個數據連接或執(zhí)行一條不返回任何結果的SQL語句。_CommandPtr返回一個記錄集,它提供了一種簡單的方法來執(zhí)行返回記錄集的存儲過程和SQL語句。_RecordsetPtr是一個記錄集對象,它對記錄集提供了更多的控制功能,如記錄鎖定,游標控制等。創(chuàng)建Connection對象和Recordset對象方法如下:

_ConnectionPtr m_pConnection; // 連接接口
_RecordsetPtr m_pRecordset;   // 記錄集指針
HRESULT hr;
hr = m_pConnection.CreateInstance("ADODB.Connection");
if (!SUCCEEDED(hr))
{
    AfxMessageBox("創(chuàng)建 Connection對象失敗");
}
hr = m_pRecordset.CreateInstance("ADODB.Recordset");
if (!SUCCEEDED(hr))
{
    AfxMessageBox("創(chuàng)建Recordset對象失敗");
}

(4)連接不同數據庫。參數sConnection為連接屬性設置標準。它隨數據源類型的不同而變化。以下是其常見值:

1. 訪問ODBC數據:

"Provider=MSDASQL;DSN=dsnName;UID=userName;PWD=userPassword;"

2. 訪問ACCESS 97數據庫:

"Provider=Microsoft.Jet.OLEDB.3.51;DataSource=databaseName;User ID=userName;Password=userPassword;"

3. 訪問ACCESS 2000數據庫:

"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=databaseName;User ID=userName;Password=userPassword;"

4. 訪問MS SQL數據庫:

"Provider=SQLOLEDB;Data Source=serverName;InitialCatalog=databaseName;User ID=userName;Password=userPassword;"

5. 訪問ORACLE數據庫:

"Provider=MSDAORA.1;Data Source=serverName;UserID=userName;Password=userPassword;"

inline BOOL ConnectDB(CString sConnection)
{
    try
    {
        m_pConnection->Open(_bstr_t(sConnection), "", "", adModeUnknown);
    }
    catch (_com_error e)
    {
        AfxMessageBox("連接數據庫失敗,錯誤信息:%s", e.ErrorMessage());
        return FALSE;
    }
    return TRUE;
}

(5) 查詢:

BOOL Query(CString SqlCommand)
{
    try
    {
        m_pRecordset->Open((_bstr_t) SqlCommand, m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);
    }
    catch (_com_error* e)
    {
        AfxMessageBox(e->ErrorMessage());
        return FALSE;
    }
    return TRUE;
}

(6) 修改記錄:

_variant_t vNULL;
CString SqlCommand = "UPDATE TableName SET …[ WHERE…]";
m_pConnection->Execute((_bstr_t)SqlCommand, &vNULL, adCmdText);

(7) 添加記錄:

_variant_t vNULL;
CString SqlCommand = "INSERTINTO TableName (…) VALUES (…)[WHERE…]";
m_pConnection->Execute((_bstr_t) SqlCommand,&vNULL, adCmdText);

(8) 刪除記錄:

_variant_t vNULL;
CString SqlCommand = "DELETEFROM TableName WHERE …";
m_pConnection->Execute((_bstr_t)SqlCommand, &vNULL, adCmdText);

(9) 統(tǒng)計。參數SqlCommand的形式如下:

1. 統(tǒng)計紀錄數:SELECT COUNT(*) FROM TableName[WHERE…]

2. 統(tǒng)計字段總和:SELECT SUM FieldNameFROM TableName[ WHERE…]

3. 統(tǒng)計字段平均值:SELECT AVG FieldNameFROM TableName[ WHERE…]

4. 統(tǒng)計字段最大值:SELECT MAX FieldNameFROM TableName[ WHERE…]

5. 統(tǒng)計字段最小值:SELECT MIN FieldNameFROM TableName[ WHERE…]

inline _variant_tStatistics(CString SqlCommand)
{
    _variant_t vNULL;
    _RecordsetPtrpRecordset;
    pRecordset = m_pConnection->Execute((_bstr_t)SqlCommand, &vNULL, adCmdText);
    _variant_t vCount =pRecordset->GetCollect((_variant_t) (long)0);
    pRecordset->Close();
    Recordset.Release();
    return vCount;
}



本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
轉貼:VC++6.0下使用ADO技術訪問SQL 數據庫
VC++ ADO連接ACCESS詳解
ADO數據庫編程-總結
數據庫操作
ADO接口簡介
接著ADO.NET的記憶碎片(二)
更多類似文章 >>
生活服務
熱點新聞
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服