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

打開APP
userphoto
未登錄

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

開通VIP
ADO ACCESS 懶人的開發(fā)簡單指南

首先申明:本文僅面向初學者,非常初的那種,有任何關(guān)于為什么的問題,請勿詢問本人,浩瀚如煙的MSDN就是你的去處。我們這里僅解決如何做的問題,目標是讓大家能夠讓自己的程序立刻跑起來,能夠做一些自己想要的簡單操作。

準備工作

我們要引入ADO類型庫:

#import "c:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace rename("EOF", "EndOfFile")

注:”EndOfFile”可以更換為其他字符串,在后面的程序看到”EndOfFile”更換為你自己定義的字符串即可。

為了使用Execute方法,請包含icrsint.h

#include "icrsint.h"

 

開始編程工作:

初始化COM庫

CoInitialize(NULL);

AfxOleInit();

注:CoInitialize(NULL);用于非MFC環(huán)境下初始化COM庫

    AfxOleInit();用于MFC環(huán)境下初始化COM庫

有說法2個都必須有,但我在實踐中僅用CoInitialize(NULL)未發(fā)生問題,共同使用也未發(fā)生問題。暫時將2者都應用了。

HRESULT hr; //用于表示錯誤代碼

if FAILED(CoInitialize(NULL))  // COM 初始化調(diào)用

{

CoUninitialize();

AfxOleInit();

hr = E_UNEXPECTED;

}

建立數(shù)據(jù)庫連接

用Connection對象連接數(shù)據(jù)庫:

添加一個指向Connection對象的指針:

_ConnectionPtr m_pConnection;

HRESULT hr; //用于表示錯誤代碼

hr = m_pConnection.CreateInstance("ADODB.Connection");//創(chuàng)建Connection對象實例

?。簾o論是Connection對象還是Recordset對象都必須使用CreateInstance方法創(chuàng)建對象實例,否則其后續(xù)操作無法完成。

連接數(shù)據(jù)庫:

m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Test.mdb","","", adModeUnknown); //Access2000

m_pConnection->Open("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=test.accdb”,"","", adModeUnknown);//Access2007

m_pConnection->Open("Provider=SQLOLEDB.1;Server=iim-xia; Database=TestDB; uid=sa; pwd=這是密碼不告訴你; ","","",adModeUnknown);//SQLSever

注:其中Server是數(shù)據(jù)庫服務(wù)器名,Database是數(shù)據(jù)庫名,uid是用于登錄該數(shù)據(jù)庫的用戶名,pwd是該用戶的密碼,錯誤代碼error  #3149是用戶名密碼錯誤。

 

下面是一段用于連接數(shù)據(jù)庫的程序:用try和catch塊來捕捉錯誤以防止程序崩潰。

CoInitialize(NULL);

AfxOleInit();//

_ConnectionPtr m_pConnection;//建立Connection對象的指針;

HRESULT hr; //用于表示錯誤代碼

try

{

       hr = m_pConnection.CreateInstance("ADODB.Connection");//創(chuàng)建Connection對象

       if(SUCCEEDED(hr))

       {

       hr=m_pConnection->Open("Provider=SQLOLEDB.1;Server=iim-xia;Database=TestDB; uid=sa;pwd=這是密碼不告訴你;","","",adModeUnknown); //創(chuàng)建面向SQL server的連接

       }

}

catch(_com_error e)///捕捉異常

{

       CString errormessage;

       errormessage.Format("連接數(shù)據(jù)庫失敗!\r\n錯誤信息:%s",e.ErrorMessage());

       AfxMessageBox(errormessage);///顯示錯誤信息

}

以上是建立數(shù)據(jù)鏈接的過程,針對不同的數(shù)據(jù)庫,替換紅字標注的部分。

 

獲取數(shù)據(jù)

首先建立數(shù)據(jù)集,我們的一切操作以數(shù)據(jù)集(Recordset)為基礎(chǔ):

我們需要一個指向Recordset的指針:

_RecordsetPtr m_pRecordset;

同Connection對象一樣,必須實例化:

m_pRecordset.CreateInstance("ADODB.Recordset");

使用Open方法來使用SQL語言對數(shù)據(jù)庫操作:

m_pRecordset->Open("SELECT ID,X,Y,SpeedGroup,TenNum FROM TestList " ,

 _variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);

這是一條select語句:從表TestList中選擇列名為“ID”、“X”、“Y”、“SpeedGrooup”、“TenNum”放入m_pRecordset(數(shù)據(jù)集對象指針)。

 

這時我們的數(shù)據(jù)集里就有ID、X、Y、SpeedGroup、TenNum這些值。他們的排列順序來自于你的Select語句,而非數(shù)據(jù)庫里的表里的列的位置。你也可以用通配符“*”(SELECT * FROM TestList)來選擇表TestList中所有的列。

 

為了您的程序安全,避免程序崩潰,請“踹”(try) it。如下:

HRESULT hr; //用于表示錯誤代碼

try

{

       hr = m_pRecordset.CreateInstance("ADODB.Recordset");//創(chuàng)建Recordset對象

       if(SUCCEEDED(hr))

       {

          hr=m_pRecordset->Open("SELECT ID,X,Y,SpeedGroup,TenNum FROM TestList",_variant_t((IDispatch*)m_pConnection,true),adOpenStatic, adLockOptimistic , adCmdText); //創(chuàng)建數(shù)據(jù)集。

       }

}

catch(_com_error e)///捕捉異常

{

       CString errormessage;

       errormessage.Format("連接數(shù)據(jù)庫失敗!\r\n錯誤信息:%s",e.ErrorMessage());

       AfxMessageBox(errormessage);///顯示錯誤信息

}

 

下面是如何將數(shù)據(jù)集中的數(shù)據(jù)取出(這里只是一般性的數(shù)據(jù):int、long、char之類):

先來個CString C_DataS,還需要一個_variant_t  Y,(傳說中具有超強能力的數(shù)據(jù)類型)然后我們繼續(xù)“踹”(try)

CString C_DataS; _variant_t  Y;

try

{

       while(! m_pRecordset-> EndOfFile)

       {

              Y=m_pRecordset->GetCollect("ID");//獲取列名為ID的列的數(shù)據(jù)

              if(Y.vt!=VT_NULL)

              {

                  C_DataS.Format("%d",Y.lVal);//將Y的值放入CString中

                  float i=atof(C_DataS);//將CString的值轉(zhuǎn)為float類型

                      cout<<i<<endl;

              }

               m_pRecordset->MoveNext();

        }

}

catch(_com_error e)///捕捉異常

{

       CString errormessage;

       errormessage.Format("連接數(shù)據(jù)庫失敗!\r\n錯誤信息:%s",e.ErrorMessage());

       AfxMessageBox(errormessage);///顯示錯誤信息

}

注:CString的類型轉(zhuǎn)換去網(wǎng)上查詢。

try

{

       m_pRecordset->MoveFirst();

       //m_pRecordset->Delete(adAffectCurrent);//刪除當前行

       m_pRecordset->AddNew();

       int IDDD=40400;

       m_pRecordset->PutCollect("ID",_variant_t((int)IDDD));

       m_pRecordset->PutCollect("X",_variant_t((double)1));

       m_pRecordset->PutCollect("Y",_variant_t((double)1));

       m_pRecordset->PutCollect("SpeedGroup",_variant_t((int)1));

       m_pRecordset->PutCollect("TenNum",_variant_t((int)1));

       m_pRecordset->Update();

}

catch(_com_error e)///捕捉異常

{

       CString errormessage;

       errormessage.Format("連接數(shù)據(jù)庫失敗!\r\n錯誤信息:%s",e.ErrorMessage());

       AfxMessageBox(errormessage);///顯示錯誤信息

}

上面的一“踹”是用來添加一行數(shù)據(jù)的。注釋掉的那一行是用于刪除操作。

m_pRecordset->Update();執(zhí)行后,才真正的修改了數(shù)據(jù)庫。

注:以上的一“踹”不能在使用Execute方法建立的數(shù)據(jù)集里“踹”。(我不知道是不是我自己的問題)

 

更簡單的方法,使用Connection->Execute方法來建立數(shù)據(jù)集,方法如下:

m_pRecordset = m_pConnection->Execute("SELECT * FROM TentacleCoordinate", &RecordsAffected , adCmdText);

別忘了定義:_variant_t RecordsAffected;

 

其它的對數(shù)據(jù)庫的操作:

這些都是基于SQL語言的,Execute方法。

創(chuàng)建表:

m_pConnection->Execute("CREATE TABLE TestList(ID INTEGER,username TEXT,old INTEGER,birthday DATETIME)",&RecordsAffected,adCmdText);

 

插入值:

m_pConnection->Execute("INSERT INTO TestList(ID,username,old,birthday) VALUES (1, 'Washington',25,'1970/1/1')",&RecordsAffected,adCmdText);

 

別忘了關(guān)上它:

飯前便后要洗手,洗手別忘關(guān)龍頭:

if(m_pRecordset->State)

{

       AfxMessageBox("關(guān)閉記錄集");

       m_pRecordset->Close();///關(guān)閉記錄集

}

if(m_pConnection->State)

{

       AfxMessageBox("關(guān)閉連接");

       m_pConnection->Close();

 

}

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
ADO.NET
C++在數(shù)據(jù)庫中插入數(shù)據(jù)
(轉(zhuǎn))VC下ADO訪問遠程ORACLE數(shù)據(jù)庫
_RecordsetPtr
使用VC連接Access數(shù)據(jù)庫的兩種方法
從txt向access錄入數(shù)據(jù)
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服