1. 程式人生 > >MFC VC ADO連結SQL Server資料庫 操作資料庫資料

MFC VC ADO連結SQL Server資料庫 操作資料庫資料

//1.包含ADO包,在stdafx.h中新增下面的程式碼:

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

//2.初始化COM庫
AfxOleInit();

//3.建立連線例項
m_pConnection.CreateInstance(__uuidof(Connection));
try
{

//4.連線資料庫, Server:對應伺服器名字,我的伺服器名字叫做TGZ。如果想要遠端連線SQL資料庫,就需要把TGZ該為要連線的資料庫所在主機的IP,master該為你需要連線的資料庫名,UID是登入時的名稱,一般是sa,PWD是登入密碼。

m_pConnection->Open("driver={SQL Server};Server=TGZ;Database=master;UID="";PWD=""","","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox(_T("資料庫連線失敗!"));
return FALSE;
}


//5.建立資料集例項
m_pRecordset.CreateInstance(__uuidof(Recordset));
HRESULT hr;
//CString sql = "select * from photo";
try
{
//6.執行sql語句,可以是刪除、修改、查詢語句
hr = m_pRecordset->Open( "select * from photo", theApp.m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);


}
catch (_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
return FALSE;


}


//如果是查詢語句,迴圈所有資料集,及每一條資料
CString res;
CString name;
CString pwd;
int i = 0;
if(hr == S_OK)
{
//移到第一條資料
m_pRecordset->MoveFirst();


//如果有資料,有的不是adoEOF, 是rsEOF
while(!m_pRecordset->adoEOF)
{
//獲取相應欄位的值
res = m_pRecordset->GetCollect("id");
name = m_pRecordset->GetCollect("name");
pwd = m_pRecordset->GetCollect("pwd");

//移動到下一條
m_pRecordset->MoveNext();
i++;
}
}
//增加一條新記錄
m_pRecordset->AddNew();
m_pRecordset->PutCollect("id", i);
m_pRecordset->PutCollect("name", "33");
m_pRecordset->PutCollect("pwd", "33");

//只有更新以後才能真正起效,在資料庫表中顯示出來
m_pRecordset->Update();