访问数据库出现"未指定的错误"

linxum 2006-10-14 11:08:51
在对话框点击"查看用户信息"按钮时触发下列代码,但是出现"未指定的错误".数据库是用的本地服务器,也打开了.新建的数据库,只是简单设置过表和视图,并且添加了一些内容.请教是怎么回事??
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());
}
}
...全文
306 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
linxum 2006-10-16
  • 打赏
  • 举报
回复
谢谢各位的帮忙,长进了不少,尤其是晚起的虫,照你说的办法,果然OK.谢谢!
linxum 2006-10-16
  • 打赏
  • 举报
回复
晚起的虫能教下如何连接数据库和拷连接串吗?
我查了些资料,bstr_t strConnect = "Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=userman;Data Source=localhost;";用的是ADODB控件还是ADODC控件,或者都不是?
新手上路,不好意思 ^v^
一条晚起的虫 2006-10-16
  • 打赏
  • 举报
回复
应该是连接串不正确
简单的方法:用个ADODC控件连接数据库,把其中的连接串拷出来。
KevinCEC 2006-10-16
  • 打赏
  • 举报
回复
没有注册dll
lshddd 2006-10-15
  • 打赏
  • 举报
回复
这样看上去好像没问题,你这段代码包括了太多的操作。不如一步一步调试 ,确定一下是哪个部分出错先吧。在几个关键的地方加断点吧:数据库的打开,数据集的打开,数据集的查询。
lshddd 2006-10-15
  • 打赏
  • 举报
回复
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;";
linxum 2006-10-15
  • 打赏
  • 举报
回复
数据库打开那里加断点和m_pConnection->Open(strConnect,"","",adModeUnknown);前后个加了一句MessageBox("1");
后面的消息无法跳出.
断点处进入调试,出现:CXX0030:ERROR:Expression cannot be evaluated.
请问这是怎么回事?

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧