首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

ADO open卡住了 不能持续运行

2012-10-15 
ADO open卡住了 不能继续运行C/C++ code#include iostream #include iomanip#import C:\Program File

ADO open卡住了 不能继续运行

C/C++ code
#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; }  



当运行到m_pConnection->Open(strConnect,"","",adModeUnknown);
就会卡在那里 不在继续往下执行,请问是怎么回事,新手求指导。

[解决办法]
多等一会儿呢,比如30秒

放到线程里呢?

热点排行