VC2005连接sql2005数据库失败
本帖最后由 wsfxzxb 于 2012-08-09 15:23:41 编辑 一、数据库没有问题,在VB6.0中连接完好。
sql数据库: MyData_1
表: 通讯录
二、在VC2005中连接同一个数据库编译通过,无警告无错误。调试状态运行时显示最后一句
CoUninitialize();
出错。弹出对话框,Ado.exe中0x4dd1559c处未处理的异常:0xc0000005读取位置0xffffffff时发生访问冲突
注:为了排除是字符集的情况,我先后使用了Unicode字符集、多字符集及未设置三种情况,均是一样的错误。
源程序代码如下:
void CAdoDlg::OnBnClickedBtnQuery()
{
// TODO: 在此添加控件通知处理程序代码
CoInitialize(NULL);
_ConnectionPtr pConn(__uuidof(Connection));
_RecordsetPtr pRst(__uuidof(Recordset));
pConn->ConnectionString ="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=sa;Initial Catalog=MyData_1;Data Source=YINGZI-COMPUTER\\SQLEXPRESS";
pConn->Open("","","",adConnectUnspecified);
pRst=pConn->Execute("select * from 通讯录",NULL,adCmdText);
while(!pRst->rsEOF)
{
((CListBox*)GetDlgItem(IDC_LIST1))->AddString((_bstr_t)pRst->GetCollect("姓名"));
pRst->MoveNext();
}
pRst->Close();
pConn->Close();
pRst->Release
pConn->Release();
CoUninitialize();
}
[解决办法]
CoInitialize(NULL);//放在工程初始化函数里
CoUninitialize(); //放在工程退出函数里
如果你一定要放到这个函数里,就这么试试:
void CAdoDlg::OnBnClickedBtnQuery()
{
// TODO: 在此添加控件通知处理程序代码
CoInitialize(NULL);
CoInitialize(NULL);
Sleep(20);//延时20毫秒
[解决办法]
我前几天刚好连接了VS2008与sql2005,在我资源里面总结了,你可以看看
[解决办法]
谢谢楼上二位