vc数据库:VC使用数据库技巧



.数据库编程(ADO)
要用ADO连接数据头文件中加入#import\"c:\\ProgramFiles\\CommonFiles\\\\ado\\msado15.dll\"no_rename(\"EOF\",\"adoEOF\")rename(\"BOF\",\"adoBOF\")
//化OLE/COM库环境_ConnectionPtrm_pConnection;
::CoInitialize(NULL);
charbuf[256],server[256],datebase[256],uid[256],pwd[256];charstr[255];
GetCurrentDirectory(255,str);//获得当前目录
strcat(str,\"\\\\dbinfo.ini\");len0=GetPrivateProfileString(\"dbinfo\",\"Provider\",\"NoText\",buf,256,str);//读取配置文件中数据库连接信息
len1=GetPrivateProfileString(\"dbinfo\",\"server\",\"NoText\",server,256,str);
len2=GetPrivateProfileString(\"dbinfo\",\"Database\",\"NoText\",datebase,256,str);
len3=GetPrivateProfileString(\"dbinfo\",\"uid\",\"NoText\",uid,256,str);
len4=GetPrivateProfileString(\"dbinfo\",\"pwd\",\"NoText\",pwd,256,str);try
{
//创建Connection对象
m_pConnection.CreateInstance(\"ADODB.Connection\");
//设置连接必须是BSTR型或者_bstr_t类型
_bstr_tstrConnect=\"Provider=\";
strConnect=strConnect+buf;
strConnect=strConnect+\";Server=\";
strConnect=strConnect+server;
strConnect=strConnect+\";Database=\";
strConnect=strConnect+datebase;
strConnect=strConnect+\";uid=\";
strConnect=strConnect+uid;
strConnect=strConnect+\";pwd=\";
strConnect=strConnect+pwd;m_pConnection->Open(strConnect,\"\",\"\",adModeUnknown);//连接到指定数据库
}
//捕捉异常
catch(_com_errore)
{
//显示信息
AfxMessageBox(e.Description);
}
执行无返回值(记录集)SQL语句InsertUpdate等无返回值语句
//Connection对象Execute思路方法:(_bstr_tCommandText, [Page]
//VARIANT*RecordsAffected,longOptions)
//其中CommandText是命令字串通常是SQL命令
//参数RecordsAffected是操作完成后所影响行数,
//参数Options表示CommandText类型:adCmdText-文本命令;adCmdTable-表名
//adCmdProc-存储过程;adCmdUnknown-未知
m_pConnection->Execute(bstrSQL,NULL,adCmdText);
执行有返回值(记录集)SQL语句
_RecordPtrm_pRecord;
//创建记录集对象
m_pRecord.CreateInstance(__uuidof(Record));
//返回表中记录
m_pRecord->Open(bstrSQL,m_pConnection.GetInterfacePtr,adOpenDynamic,adLockOptimistic,adCmdText);
CListCtrlm_list1;//记录显示在CListCtrl中
(!m_pRecord->adoEOF)//如果记录不为空
{
while(!m_pRecord->adoEOF)
{
m_list1.InsertItem(i,(LPCTSTR)(_bstr_t)m_pRecord->GetCollect(\"ID\"));
m_list1.SetItemText(i,1,(LPCTSTR)(_bstr_t)m_pRecord->GetCollect(\"tCallType\"));
m_list1.SetItemText(i,2,(LPCTSTR)(_bstr_t)m_pRecord->GetCollect(\"tHangUp\"));

_variant_tvMaxid(m_pRecord->GetCollect(\"strCallingNmb\"));
(vMaxid.vtVT_NULL)
vMaxid=\"\";
m_list1.SetItemText(i,3,(LPCTSTR)(_bstr_t)vMaxid);

_variant_tvMaxid0(m_pRecord->GetCollect(\"strCalledNmb\"));
(vMaxid0.vtVT_NULL)
vMaxid0=\"\";
m_list1.SetItemText(i,4,(LPCTSTR)(_bstr_t)vMaxid0);

_variant_tvMaxid1(m_pRecord->GetCollect(\"strOriginNmb\"));
(vMaxid1.vtVT_NULL)//此字段在数据库中为NULL值
vMaxid1=\"\";i;//CListCtrl中第i行显示此记录
m_pRecord->MoveNext;//下条记录



}
}
m_pRecord->Close;//记录集读取完毕关闭记录集
执行带参数无返回值(个或者多个记录集)存储过程
_CommandPtrm_pCommand;
m_pCommand.CreateInstance(\"ADODB.Command\"); [Page]
m_pCommand->ActiveConnection=m_pConnection;
m_pCommand->CommandType=adCmdStoredProc;
m_pCommand->CommandText=_bstr_t(\"proc_deleteSMCBQueue\");
unsignedcharflag=1;
_ParameterPtrPflag,PrecordID;
Pflag.CreateInstance(__uuidof(Parameter));
PrecordID.CreateInstance(__uuidof(Parameter));

CStringst=\"\";
st.Format(\"%d\",recordID);
Pflag=m_pCommand->CreateParameter(_bstr_t(\"flag\"),adTinyInt,adParamInput,1,(_variant_t)flag);
m_pCommand->Parameters->Append(Pflag);
PrecordID=m_pCommand->CreateParameter(_bstr_t(\"recordID\"),adInteger,adParamInput,4,(_variant_t)(_bstr_t)st);
m_pCommand->Parameters->Append(PrecordID);

try
{
m_pCommand->Execute(NULL,NULL,adCmdStoredProc);
}
catch(...)
{
}
执行有参数有返回记录集存储过程(其实就是执行有返回值(记录集)SQL语句)
CStringsqlrecord=\"execproc_getSMCBQueue1\";
try
{
m_pRecord=m_pConnection->Execute((_bstr_t)sqlrecord,NULL,adCmdText);
}
catch(...)
{
}
今天就记下VC有关数据库编程吧下次再记VC有关网络编程吧!
只是真正用_CommandPtrm_pCommand执行存储过程返回个或者多个记录集再分别对各记录集进行操作还没有实现啊!
Tags:  vcodbc连接数据库 vc连接数据库 vc数据库编程 vc数据库

延伸阅读

最新评论

发表评论