VC++连接SQL Server出错,错误:“数据库连接失败”,“数据库记录读取失败”

笑掠残月 2011-11-23 02:14:24
求大虾指点迷津~~~~~~~~~~
我用用ADO连接SQL Server数据库,老是报错。
错误提示:“数据库连接失败”,“数据库记录读取失败”。
捕捉异常:“Unknown error 0x800A0E7D".

代码如下:
1、在stdafx.h中导入一个ADO动态链接库msado15.dll,添加代码:
#import "msado15.dll" rename_namespace("ADODB") rename("EOF","adoEOF") using namespace ADODB;

2、在ADOConn.h中定义
public:
RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);
_ConnectionPtr m_pCon;
_RecordsetPtr m_pRs;
_CommandPtr m_pCommand;
static CString m_ConStr;

主要代码:
// AdoConn.cpp: implementation of the AdoConn class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "SQLLibraryManagementSystem.h"
#include "ADOConn.h"
#include <iostream>

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CString ADOConn::m_ConStr= " Provider=SQLOLEDB; Data Source=(local); Initial Catalog = SQLLibraryManagementSystem; Integrated Security=SSPI; Persist Security Info = False;";

ADOConn::ADOConn()
{
}

ADOConn::~ADOConn()
{
}

void ADOConn::OnInitADOConn()
{
try
{
m_pCon.CreateInstance("ADODB.Connection");
m_pCommand.CreateInstance("ADODB.Command");
m_pRs.CreateInstance("ADODB.Recordset");
m_pCon->ConnectionString = m_ConStr.AllocSysString();
m_pCon->Open("","","",-1);
}
catch(_com_error)
{
AfxMessageBox("数据库连接失败,确认数据库是否在当前路径下!");
}
}

_RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL)
{
try
{
// 连接数据库,如果Connection对象为空,则重新连接数据库
if(m_pCon==NULL)
OnInitADOConn();
// 创建记录集对象
m_pRs.CreateInstance("ADODB.Recordset");
m_pRs-> CursorLocation=adUseClient;
// 取得表中的记录
m_pRs->Open(bstrSQL,m_pCon.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error e)
{
AfxMessageBox("数据库记录读取失败");
AfxMessageBox(e.ErrorMessage());
}
return m_pRs;
}

void ADOConn::ExitConn()
{
if(m_pRs != NULL)
m_pRs->Close();
m_pCon->Close();
}

BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL)
{
}

BOOL ADOConn::RecIsNull()
{
}


void CDlgOperator::OnBtnAdd()
{
// TODO: Add your control notification handler code here
//判断基础信息是否为空
if (!InfoIsNull())
{
CString c_operator,c_password,c_level;
m_operator.GetWindowText(c_operator);
m_password.GetWindowText(c_password);
m_level.GetWindowText(c_level);
int level= atoi(c_level);
CString sql;
sql.Format("insert into tb_operator values ('%s','%s',%d)",c_operator,c_password,level);
if (m_pRs->State ==adStateOpen) //有错,异常:“(KERNEL32.DLL):0XE06D7363”[/color]
m_pRs->raw_Close();
try
{
m_pRs->Open((_bstr_t)sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);
LoadOperatorInfo();
ClearInterface();
MessageBox("操作成功.","提示",MB_OK);
}
catch(_com_error e)
{

MessageBox("操作失败.","提示",MB_OK|MB_ICONERROR);
}
}
else
MessageBox("基础信息不能为空.","提示",MB_OK+MB_ICONINFORMATION);
}

数据库为什么会连接失败呢?记录集为什么也会报错呢?

我用的办公电脑,不知道是不是电脑被设置了权限,故无法连接。

我用ADO Data 控件连接数据库,在“服务器上选择数据库”时候提示:
“[DBNETLIB][ConnectionOpen(Connect()).]SQL Server不存在或拒绝访问”。

我用了管理员权限也是这么提示,数据库SQLLibraryManagementSystem我也已经创建好了,同“msado15.dll”放在与代码同一个文件夹中。

在线等,求大侠指点~~~~
...全文
188 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
笑掠残月 2011-11-24
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 xxlovemf 的回复:]

设置断点
测试每个变量的值
[/Quote]

是在数据库连接和记录读取处报错,别的还都没进去。。。
笑掠残月 2011-11-24
  • 打赏
  • 举报
回复
额~
是在“连接字符串”的“数据连接属性”里的“连接”报错了。

请楼主指点~~~~~
谢谢!
笑掠残月 2011-11-24
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 zyq5945 的回复:]

用这个软件试试
[/Quote]

ADO助手提示:
测试连接失败,因为初始化时提供程序时发生错误。[DBNETLIB](ConnectionOpen (Connect().)]SQL Server不存在或拒绝访问。

这又是什么原因呢?
跪求解~~~~
九度空间 2011-11-24
  • 打赏
  • 举报
回复
设置断点
测试每个变量的值
zyq5945 2011-11-24
  • 打赏
  • 举报
回复
用这个软件试试
笑掠残月 2011-11-24
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 fight_in_dl 的回复:]

根据错误信息://有错,异常:“(KERNEL32.DLL):0XE06D7363”
为楼主找到一个有用参考:http://support.microsoft.com/kb/169496
文章提到了产生(KERNEL32.DLL):0XE06D7363的某种可能,楼主可结合此文调试,祝成功。
[/Quote]

我根据楼主提点的网址试了下,异常并未消除。。。
求解~~~~~~~~~~~~
笑掠残月 2011-11-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ouyh12345 的回复:]

意思就是
1、看物理上是否正常连接
2、装个sqlserver的客户端,看是否能连接上数据库

如果以上都能连接,则再看程序的问题
[/Quote]


以上都测试了,都能连接,会是哪里的问题呢?
每次测试都是数据库连接失败,数据库记录读取失败。。。。

求高手解答呀~~~~~~~
战在春秋 2011-11-24
  • 打赏
  • 举报
回复
根据错误信息://有错,异常:“(KERNEL32.DLL):0XE06D7363”
为楼主找到一个有用参考:http://support.microsoft.com/kb/169496
文章提到了产生(KERNEL32.DLL):0XE06D7363的某种可能,楼主可结合此文调试,祝成功。
笑掠残月 2011-11-24
  • 打赏
  • 举报
回复
异常:“(KERNEL32.DLL):0XE06D7363”
这又是怎么回事呢??
笑掠残月 2011-11-24
  • 打赏
  • 举报
回复
额~根据五岭散人大仙的指示,弱弱地ping了一下。物理上是能正常连接的。额~~~~不知道怎么装个sqlserver的客户端测试连接上数据库。。。。求指示!
我这台办公电脑能上网,不存在网络不通吧???
笑掠残月 2011-11-24
  • 打赏
  • 举报
回复
额~根据五岭散人大仙的指示,弱弱地ping了一下。物理上是能正常连接的。
我这台办公电脑能上网,不存在网络不通吧???
saiyaman5 2011-11-23
  • 打赏
  • 举报
回复
网络不通
ouyh12345 2011-11-23
  • 打赏
  • 举报
回复
意思就是
1、看物理上是否正常连接
2、装个sqlserver的客户端,看是否能连接上数据库

如果以上都能连接,则再看程序的问题
笑掠残月 2011-11-23
  • 打赏
  • 举报
回复
弱弱地问一下,楼上能否说的详细一点?额~不懂ping,不懂sqlmanager。。。。
ouyh12345 2011-11-23
  • 打赏
  • 举报
回复
首先ping一下,看连接是否顺畅
然后装一个sqlmanager,连一下数据库

4,017

社区成员

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

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