在对话框点击"查看用户信息"按钮时触发下列代码,但是出现"未指定的错误".数据库是用的本地服务器,也打开了.新建的数据库,只是简单设置过表和视图,并且添加了一些内容.请教是怎么回事??
void CRecordsetDlg::OnButton1() 
{
// 初始化OLE/COM库环境 
::CoInitialize(NULL);  
try
{
// 创建Connection对象
m_pConnection.CreateInstance("ADODB.Connection");
// 设置连接字符串,必须是BSTR型或者_bstr_t类型
_bstr_t strConnect = "Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=userman;Data Source=localhost;";
m_pConnection->Open(strConnect,"","",adModeUnknown);
// 判断连接状态是否为连接
if(m_pConnection->State == adStateOpen)
{
m_pRecordset.CreateInstance(__uuidof(Recordset));
_bstr_t vSQL;
vSQL = "SELECT * FROM Users"; 
m_pRecordset->Open(vSQL, m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
for(m_pRecordset->MoveFirst(); !m_pRecordset->adoEOF; m_pRecordset->MoveNext())
{
CString username, userpwd;
username = (LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("UserName");
userpwd = (LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("UserPwd");
CString msg;
msg.Format("用户名:%s;密码:%s", username, userpwd);
MessageBox(msg);
}
}
else
MessageBox("断开连接");
// 关闭连接
m_pConnection->Close();
}
// 捕捉异常
catch(_com_error e)
{
// 显示错误信息
AfxMessageBox(e.ErrorMessage());
}
}
void CRecordsetDlg::OnButton1() 
{
// 初始化OLE/COM库环境 
::CoInitialize(NULL);  
try
{
// 创建Connection对象
m_pConnection.CreateInstance("ADODB.Connection");
// 设置连接字符串,必须是BSTR型或者_bstr_t类型
_bstr_t strConnect = "Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=userman;Data Source=localhost;";
m_pConnection->Open(strConnect,"","",adModeUnknown);
// 判断连接状态是否为连接
if(m_pConnection->State == adStateOpen)
{
m_pRecordset.CreateInstance(__uuidof(Recordset));
_bstr_t vSQL;
vSQL = "SELECT * FROM Users"; 
m_pRecordset->Open(vSQL, m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
for(m_pRecordset->MoveFirst(); !m_pRecordset->adoEOF; m_pRecordset->MoveNext())
{
CString username, userpwd;
username = (LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("UserName");
userpwd = (LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("UserPwd");
CString msg;
msg.Format("用户名:%s;密码:%s", username, userpwd);
MessageBox(msg);
}
}
else
MessageBox("断开连接");
// 关闭连接
m_pConnection->Close();
}
// 捕捉异常
catch(_com_error e)
{
// 显示错误信息
AfxMessageBox(e.ErrorMessage());
}
}

解决方案 »

  1.   

    数据库打开那里加断点和m_pConnection->Open(strConnect,"","",adModeUnknown);前后个加了一句MessageBox("1");
    后面的消息无法跳出.
    断点处进入调试,出现:CXX0030:ERROR:Expression cannot be evaluated.
    请问这是怎么回事?
      

  2.   

    bstr_t strConnect = "Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=userman;Data Source=localhost;";改成
    bstr_t strConnect = "Provider=SQLOLEDB;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=userman;Data Source=localhost;";
      

  3.   

    应该是连接串不正确
    简单的方法:用个ADODC控件连接数据库,把其中的连接串拷出来。
      

  4.   

    晚起的虫能教下如何连接数据库和拷连接串吗?
    我查了些资料,bstr_t strConnect = "Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=userman;Data Source=localhost;";用的是ADODB控件还是ADODC控件,或者都不是?
    新手上路,不好意思 ^v^