A. VC++6.0通過MFC 創建了 對話框 ,然後怎樣通過SQL Server 連接到資料庫
class DBConnection
{
public:
DBConnection(void);
~DBConnection(void);
int OpenConnect(void);
int ExecuteSQL(_bstr_t strCmd);
_RecordsetPtr GetRecondSetPrt();
private:
_ConnectionPtr m_pConnection; //鏈接資料庫德指針變數
_RecordsetPtr m_pRecordset; //指向記錄集的指針
_variant_t RecordsAffected; //受影響的記錄條數
};
DBConnection::DBConnection(void)
{
m_pConnection=NULL;
m_pRecordset=NULL;
}
DBConnection::~DBConnection(void)
{
m_pConnection=NULL;
m_pRecordset=NULL;
}
//打開資料庫鏈接
int DBConnection::OpenConnect(void)
{
try
{
//創建連接對象
m_pConnection.CreateInstance("ADODB.Connection");
//設置連接字元串
_bstr_t strConnect ="Provider=SQLOLEDB;Data Source=20110121-1545\\SQLEXPRESS;\
Initial Catalog=ExpManDB;User ID=sa;PWD=123";
//設置連接超時時間為5秒
m_pConnection->ConnectionTimeout = 5;
//連接資料庫
m_pConnection->Open(strConnect, "", "", adModeUnknown);
return 1;
}
catch(_com_error e)
{
CString errorMsg;
errorMsg.Format(_T("連接資料庫失敗!\r錯誤信息:%s"),(LPCSTR)e.ErrorMessage());
AfxMessageBox(errorMsg);
return 0;
}
}
//返回受影響的記錄條數
int DBConnection::ExecuteSQL(_bstr_t strCmd)
{
if(m_pConnection->State)
{
try
{
m_pRecordset.CreateInstance("ADODB.Recordset"); //為Recordset對象創建實例
//執行SQL語句,並返回受影響的記錄條數
m_pRecordset=m_pConnection->Execute(strCmd,&RecordsAffected,adCmdText);
return RecordsAffected.intVal;
}
catch(_com_error &e)
{
AfxMessageBox(e.Description());
return 0;
}
}
return 0;
}
//返回記錄集以便後續使用
_RecordsetPtr DBConnection::GetRecondSetPrt()
{
return m_pRecordset;
}
可以像這樣使用,strCmd為sql語句
DBConnection dbConnector;
if(dbConnector.OpenConnect() == 0)
{
return;
}
if(dbConnector.ExecuteSQL((_bstr_t)strCmd) == 0)
{
return;
}
當然如果你還需要取出數據的時候可以這樣用
_RecordsetPtr pRecordSet;
pRecordSet=dbConnector.GetRecondSetPrt();
_variant_t vCardNo;
vCardNo = pRecordSet->GetCollect("cardNO"); //得到數據表種cardNO欄位
後面_variant_t類型就可以轉換為int float CString等各種類型了。
如果有什麼問題再交流。