数据库连接失败,高手请进
我用ADO连接ACCESS数据库,但总是说连接数据库失败,用下面的语句获取错误信息为:未知的错误
errormessage.Format(_T("连接数据库失败!\r\n错误信息:%s"),e.ErrorMessage());
之后我将获取错误信息的命令做了一下改动
errormessage.Format(_T("连接数据库失败!\r\n错误信息:%s"),e.Description());
这样在调试过程中出现以下问题(中间我一直点“继续”,发现错误成了死循环 就点了“中断”)
错误信息如下:
抗力计算.exe 中的 0x7c81eb33 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012e51c 处的 _com_error。
抗力计算.exe 中的 0x7c81eb33 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012e554 处的 _com_error。
抗力计算.exe 中的 0x7c81eb33 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012e560 处的 _com_error。
抗力计算.exe 中的 0x7c81eb33 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012e554 处的 _com_error。
抗力计算.exe 中的 0x7c81eb33 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012e51c 处的 _com_error。
抗力计算.exe 中的 0x7c81eb33 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012e560 处的 _com_error。
抗力计算.exe 中的 0x7c81eb33 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012e554 处的 _com_error。
抗力计算.exe 中的 0x7c81eb33 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012e51c 处的 _com_error。
抗力计算.exe 中的 0x7c81eb33 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012e560 处的 _com_error。
抗力计算.exe 中的 0x7c81eb33 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012e554 处的 _com_error。
抗力计算.exe 中的 0x7c81eb33 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012e51c 处的 _com_error。
抗力计算.exe 中的 0x7c81eb33 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012e560 处的 _com_error。
抗力计算.exe 中的 0x7c81eb33 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012e554 处的 _com_error。
抗力计算.exe 中的 0x7c81eb33 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012e51c 处的 _com_error。
抗力计算.exe 中的 0x7c81eb33 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012e560 处的 _com_error。
抗力计算.exe 中的 0x7c81eb33 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012e554 处的 _com_error。
抗力计算.exe 中的 0x7c81eb33 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012e51c 处的 _com_error。
抗力计算.exe 中的 0x7c81eb33 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012e560 处的 _com_error。
我的程序是很常用的语句 都是从网上搞下来的,程序如下:
CDialog::OnInitDialog();
// TODO: 在此添加额外的初始化
/************************* 连接数据库 ********************/
_ConnectionPtr m_pConnection;// 初始化COM,创建ADO连接等操作
AfxOleInit();
m_pConnection.CreateInstance(__uuidof(Connection));
try
{
// 打开本地Access库Demo.mdb
m_pConnection->Open(_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=变形抗力数据库.mdb;Persist Security Info=False"),"","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox(_T("数据库连接失败,确认数据库 变形抗力数据库.mdb 是否在当前路径下!")); 当点击后 弹出此对话框 说明数据库连接失败
return FALSE;
}
/************************* 建立数据集 ********************/
_RecordsetPtr m_pRecordset;
m_pRecordset.CreateInstance(__uuidof(Recordset));
// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
// 因为它有时会经常出现一些意想不到的错误。
try
{
m_pRecordset->Open("SELECT * FROM 品种",
// 查询品种表中所有字段
m_pRecordset.GetInterfacePtr(), // 获取库接库的IDispatch
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
/************************* 读取数据 ********************/
_variant_t var;
CString strKind;
try
{
if(!m_pRecordset->BOF)
m_pRecordset->MoveFirst();
else
{
AfxMessageBox(_T("表内数据为空"));
return FALSE;
}
// 读入库中各字段并加入列表框中
while(!m_pRecordset->adoEOF)
{
var = m_pRecordset->GetCollect("品种");
if(var.vt != VT_NULL)
strKind = (LPCSTR)_bstr_t(var);
m_ComBoxList1.AddString(strKind);
m_pRecordset->MoveNext();
}
// 默认列表指向第一项,同时移动记录指针并显示
m_ComBoxList1.SetCurSel(0);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
/************************关闭记录集************************/
m_pRecordset->Close();
m_pRecordset=NULL;
/************************* 关闭数据库连接 ********************/ “我将此处注释掉也是一样的”
if (m_pConnection->State)
m_pConnection->Close();
m_pConnection=NULL;
errormessage.Format(_T("连接数据库失败!\r\n错误信息:%s"),e.ErrorMessage());
之后我将获取错误信息的命令做了一下改动
errormessage.Format(_T("连接数据库失败!\r\n错误信息:%s"),e.Description());
这样在调试过程中出现以下问题(中间我一直点“继续”,发现错误成了死循环 就点了“中断”)
错误信息如下:
抗力计算.exe 中的 0x7c81eb33 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012e51c 处的 _com_error。
抗力计算.exe 中的 0x7c81eb33 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012e554 处的 _com_error。
抗力计算.exe 中的 0x7c81eb33 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012e560 处的 _com_error。
抗力计算.exe 中的 0x7c81eb33 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012e554 处的 _com_error。
抗力计算.exe 中的 0x7c81eb33 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012e51c 处的 _com_error。
抗力计算.exe 中的 0x7c81eb33 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012e560 处的 _com_error。
抗力计算.exe 中的 0x7c81eb33 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012e554 处的 _com_error。
抗力计算.exe 中的 0x7c81eb33 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012e51c 处的 _com_error。
抗力计算.exe 中的 0x7c81eb33 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012e560 处的 _com_error。
抗力计算.exe 中的 0x7c81eb33 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012e554 处的 _com_error。
抗力计算.exe 中的 0x7c81eb33 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012e51c 处的 _com_error。
抗力计算.exe 中的 0x7c81eb33 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012e560 处的 _com_error。
抗力计算.exe 中的 0x7c81eb33 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012e554 处的 _com_error。
抗力计算.exe 中的 0x7c81eb33 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012e51c 处的 _com_error。
抗力计算.exe 中的 0x7c81eb33 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012e560 处的 _com_error。
抗力计算.exe 中的 0x7c81eb33 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012e554 处的 _com_error。
抗力计算.exe 中的 0x7c81eb33 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012e51c 处的 _com_error。
抗力计算.exe 中的 0x7c81eb33 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012e560 处的 _com_error。
我的程序是很常用的语句 都是从网上搞下来的,程序如下:
CDialog::OnInitDialog();
// TODO: 在此添加额外的初始化
/************************* 连接数据库 ********************/
_ConnectionPtr m_pConnection;// 初始化COM,创建ADO连接等操作
AfxOleInit();
m_pConnection.CreateInstance(__uuidof(Connection));
try
{
// 打开本地Access库Demo.mdb
m_pConnection->Open(_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=变形抗力数据库.mdb;Persist Security Info=False"),"","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox(_T("数据库连接失败,确认数据库 变形抗力数据库.mdb 是否在当前路径下!")); 当点击后 弹出此对话框 说明数据库连接失败
return FALSE;
}
/************************* 建立数据集 ********************/
_RecordsetPtr m_pRecordset;
m_pRecordset.CreateInstance(__uuidof(Recordset));
// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
// 因为它有时会经常出现一些意想不到的错误。
try
{
m_pRecordset->Open("SELECT * FROM 品种",
// 查询品种表中所有字段
m_pRecordset.GetInterfacePtr(), // 获取库接库的IDispatch
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
/************************* 读取数据 ********************/
_variant_t var;
CString strKind;
try
{
if(!m_pRecordset->BOF)
m_pRecordset->MoveFirst();
else
{
AfxMessageBox(_T("表内数据为空"));
return FALSE;
}
// 读入库中各字段并加入列表框中
while(!m_pRecordset->adoEOF)
{
var = m_pRecordset->GetCollect("品种");
if(var.vt != VT_NULL)
strKind = (LPCSTR)_bstr_t(var);
m_ComBoxList1.AddString(strKind);
m_pRecordset->MoveNext();
}
// 默认列表指向第一项,同时移动记录指针并显示
m_ComBoxList1.SetCurSel(0);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
/************************关闭记录集************************/
m_pRecordset->Close();
m_pRecordset=NULL;
/************************* 关闭数据库连接 ********************/ “我将此处注释掉也是一样的”
if (m_pConnection->State)
m_pConnection->Close();
m_pConnection=NULL;
...全文
相关推荐
Java连接MySQL数据库失败的一种可能原因
在IT行业中,数据库连接是应用程序与数据库交互的基础。在Java编程中,我们通常使用JDBC(Java Database Connectivity)来建立这种连接。
pycharm工具连接mysql数据库失败问题
测试连接,如果一切配置正确,你应该能够成功连接到MySQL数据库。总结来说,PyCharm连接MySQL数据库失败通常是由于时区不匹配的问题。
若依数据库连接失败[源码]
在软件开发领域,数据库连接是一个基础而关键的过程。当开发人员在启动若依框架代码时遇到数据库连接失败的问题,首先需要关注错误信息中提到的“通信链接失败”。
连接数据库一直失败
刚导入数据的时候,一直提示连接数据库失败,后来又重新卸载了mysql,重新安装一个新版本,发现还是不行,后来就没理它,到了晚上突发奇想,就在idea中file--projectStructure中pr
VC++连接数据库失败解决方法
本文针对VC++连接MySQL数据库失败问题,提出通过安装MySQL ODBC驱动、配置系统DSN数据源及使用Data Control控件的方法,详细说明了各步骤与参数设置,有效保障数据库连接的稳定性


新手乐园
