ADO open卡住了 不能继续运行
#include <iostream> #include <iomanip>#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename( "EOF","EndOfFile")using namespace std; struct USER{ public: char uid[10]; char username[10]; char sex[2]; long age; char email[20];}; int main() { struct USER user; ::CoInitialize(NULL); // 初始化OLE/COM库环境 ,为访问ADO接口做准备 _RecordsetPtr m_pRecordset("ADODB.Recordset"); _ConnectionPtr m_pConnection("ADODB.Connection"); _bstr_t bstrSQL("select * from NoteUsers"); //查询语句 char *query_cmd = "DELETE FROM NoteUsers WHERE username ='wgh'"; try { // 创建Connection对象 m_pConnection.CreateInstance("ADODB.Connection"); // 设置连接字符串,必须是BSTR型或者_bstr_t类型 _bstr_t strConnect="Provider=SQLOLEDB.1;Server=(local);Database=NoteBook;uid=sa;pwd=123456"; //若数据库在网络上则Server为形如(192.168.1.5,3340) //用户sa和密码123只是针对我的库 m_pConnection->Open(strConnect,"","",adModeUnknown); if(m_pConnection==NULL) cerr<<"Lind data ERROR!\n "; // 创建记录集对象 m_pRecordset.CreateInstance(__uuidof(Recordset)); // 取得表中的记录 m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText); /*查询数据*/ _variant_t vuid,vusername,vage,vsex,vemail; //对应库中的uid,username,age,sex,email cout << "ID 用户名 年龄 性别 邮箱 "; cout << "\n----------------------------\n "; while (!m_pRecordset->EndOfFile) { vuid = m_pRecordset->GetCollect(_variant_t((long)0));//这儿给字段编号和字段名都可以 vusername = m_pRecordset->GetCollect( "username "); vage = m_pRecordset->GetCollect( "age "); vsex = m_pRecordset->GetCollect( "sex "); vemail = m_pRecordset->GetCollect( "email "); if (vuid.vt != VT_NULL && vusername.vt != VT_NULL && vage.vt != VT_NULL && vsex.vt != VT_NULL && vemail.vt != VT_NULL) { cout.setf(ios::left); cout << setw(14) << (char*)(_bstr_t)vuid; cout << setw(14) << (char*)(_bstr_t)vusername; cout << setw(8) << vage.lVal; cout << setw(8) << (char*)(_bstr_t)vsex; cout <<setw(20) << (char*)(_bstr_t)vemail; cout.unsetf(ios::left); cout << endl; } m_pRecordset->MoveNext(); ///移到下一条记录 } /*插入、删除数据*/ cout << "\n----------------------------\n "; cout << "\n请输入你要添加的用户信息"; cout << "\n ID: "; cin >> user.uid; cout << "\n用户名: "; cin >> user.username; cout << "\n年龄: "; cin >> user.age; cout << "\n性别: "; cin >> user.sex; cout << "\n邮箱: "; cin >> user.email; m_pRecordset->MoveFirst(); //移动到第一条记录 m_pRecordset->AddNew(); ///添加新记录 m_pRecordset->PutCollect( "uid ",_variant_t(user.uid)); m_pRecordset->PutCollect( "username ",_variant_t(user.username)); m_pRecordset->PutCollect( "age ",_variant_t(user.age)); m_pRecordset->PutCollect( "sex ",_variant_t(user.sex)); m_pRecordset->PutCollect( "email ",_variant_t(user.email)); m_pRecordset->Update(); m_pConnection->Execute(query_cmd,NULL,1); //用Execute执行sql语句来删除 m_pRecordset->Close(); // 关闭记录集 } // 捕捉异常 catch(_com_error e) { // 显示错误信息 cerr << "\nERROR: " << (char*)e.Description();//抛出异常 } if(m_pConnection->State) m_pConnection->Close(); ::CoUninitialize(); return 0; }