ADO以Oracle数据库作为例子 相关Oracle配置较多,日后再补充完整 #import "C:/Program Files/Common Files/System/ado/msado15.dll" / no_namespace rename("EOF","adoEOF") #include <stdio.h> #include "conio.h" _ConnectionPtr conn; _RecordsetPtr rs; void init() { //1.初始化 CoInitialize(NULL); //2.建立连接 // _ConnectionPtr conn; //智能指针 conn.CreateInstance(__uuidof(Connection)); //手动添加ADO.udl文件-->配置-->同txt打开查看 _bstr_t url ="Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=scott;Data Source=tarena"; conn->Open(url,"","tiger",-1); } void slt() { //3.建立记录集对象 // _RecordsetPtr rs; rs.CreateInstance(__uuidof(Recordset)); _bstr_t sql = "select * from dept"; rs->Open(sql,_variant_t((IDispatch*)conn,true),adOpenDynamic,adLockOptimistic,adCmdText); //4.操作结果集rs _variant_t m_id; _variant_t m_name; _variant_t m_loc; while (!rs->adoEOF){ //取出每个字段的值 rs->get_Collect((_variant_t)"deptno",&m_id); rs->get_Collect((_variant_t)"dname",&m_name); rs->get_Collect((_variant_t)"loc",&m_loc); printf("%s , %s , %s/n",(LPCSTR)(_bstr_t)m_id,(LPCSTR)(_bstr_t)m_name,(LPCSTR)(_bstr_t)m_loc); rs->MoveNext(); } } void add() { //使用rs添加记录 rs->AddNew(); rs->put_Collect((_variant_t)"deptno",(_variant_t)"98"); rs->put_Collect((_variant_t)"dname",(_variant_t)"HAHA"); rs->put_Collect((_variant_t)"loc",(_variant_t)"DC"); rs->Update(); } //使用command和parameter void cp() { _CommandPtr cmd; cmd.CreateInstance(__uuidof(Command)); cmd->ActiveConnection = conn; /* cmd->CommandText = "INSERT INTO dept VALUES(99,'AHAH','FC')"; //不能连续添加,否则会覆盖掉;使用Parameter cmd->Execute(NULL,NULL,adCmdText); */ try{ cmd->CommandText = "INSERT INTO dept VALUES(?,?,?)"; //安全性也高 //对sql语句的占位符,使用parameterptr制定具体的值 _ParameterPtr param; VARIANT vtRoyalty; vtRoyalty.vt = VT_I2; vtRoyalty.iVal = 54; param = cmd->CreateParameter("fuck",//对象名称随便起 adInteger,adParamInput,sizeof(int),vtRoyalty); cmd->Parameters->Append(param); //添加第一个参数 param->Value = vtRoyalty; param = cmd->CreateParameter("shit", adVarChar,adParamInput,sizeof(3),"HR"); cmd->Parameters->Append(param); //添加第二个参数 param = cmd->CreateParameter("baby", adVarChar,adParamInput,sizeof(3),"BJ"); cmd->Parameters->Append(param); //添加第三个参数 cmd->Execute(NULL,NULL,adCmdText); } catch (_com_error &e) { printf("Wo Cao !/n"); _bstr_t bstrSource(e.Source()); _bstr_t bstrDescription(e.Description()); // PrintProviderError(pConnection); printf("/n Source : %s /n Description : %s /n",(LPCSTR)bstrSource,(LPCSTR)bstrDescription); } } int main() { init(); slt(); // add(); // cp(); return 0; }