VC++用ADO连接SQL Server出错,异常:“Unknown error 0x800A0E7D".提示:“数据库连接失败”.
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VC++用ADO连接SQL Server出错,异常:“Unknown error 0x800A0E7D".提示:“数据库连接失败”.相关的知识,希望对你有一定的参考价值。
求大虾指点迷津~~~~~~~~~~
我用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;
数据库为什么会连接失败呢?我用的办公电脑,不知道是不是电脑被设置了权限,故无法连接。
我用ADO Data 控件连接数据库,在“服务器上选择数据库”时候提示:
“[DBNETLIB][ConnectionOpen(Connect()).]SQL Server不存在或拒绝访问”。
我用了管理员权限也是这么提示,数据库SQLLibraryManagementSystem我也已经创建好了,同“msado15.dll”放在与代码同一个文件夹中。
求大侠指点~~~~另再送分
还有,你的登录用户需被设置成允许连接,在用户属性里面有 参考技术A 因为你服务没开......追问
开了呀,我用SQL查询分析器可以操作数据库的呀~~~~~~
额~貌似SQL Server服务管理器最底下有行小字提示:未连接...
这就是传说中的服务器未开???
跪求解...
- - 那不就是服务没开么老大。。。。。 。
参考技术B 有没有安装过VC++数据库!!先下载试下追问VC++数据库??你的意思是有没有安装SQL Server数据库??安装了呀。Access数据库能用的。但是这个SQL Server数据库就一直连接不上,不知道哪错了。。。
追答VBVC 201108增强版.exe 你去找下这个文件 安装下看看
大家会VC用ADO连接oracle的请帮忙指点,谢谢!
VC用ADO连接oracle的方法,请大家举个例子,最好能实现增,删,改,查的,先谢谢大家了!!!有追分
这个例子里用户名和密码都是pzone 数据库名是zp改成你想要的就行了
import "c:\program files\common files\system\ado\msado15.dll" \
no_namespace \
rename ("EOF", "adoEOF")
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
// 初始化COM,创建ADO连接等操作
AfxOleInit();
连接:
m_pConnection.CreateInstance(__uuidof(Connection));
try //建立数据库连接
m_pConnection.CreateInstance(__uuidof(Connection));
m_pConnection->Open("Provider=OraOLEDB.Oracle.1;Password=pzone;User ID=pzone;Data Source=zp;Persist Security Info=True","","",adModeUnknown);
catch(_com_error e)
CString errormessage;
errormessage.Format("数据库连接失败!\r\n错误信息:%s", e.ErrorMessage());
AfxMessageBox(errormessage);
//return FALSE;
查
_bstr_t sql="select name from booktype";
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open(sql, m_pConnection->GetConnectionString(),adOpenStatic,adLockOptimistic,adCmdText);
if(!m_pRecordset->BOF)//判断表内数据是否为空
m_pRecordset->MoveFirst();
else
AfxMessageBox("BookType表内数据为空");
return;
while(!m_pRecordset->adoEOF)
CString item=m_pRecordset->GetCollect("name");
m_pRecordset->MoveNext();
m_pRecordset->Close();
增加:
_bstr_t sql="insert into tablename values (".....;
m_pConnection->Execute(sql,NULL,adCmdText);
删除
_bstr_t sql="delete from tablename where ...";
m_pConnection->Execute(sql,NULL,adCmdText);
改
_bstr_t sql="update tablename set xx=...";
m_pConnection->Execute(sql,NULL,adCmdText); 参考技术A 会vc的ado连access,不知道是不是一样-_.-
以上是关于VC++用ADO连接SQL Server出错,异常:“Unknown error 0x800A0E7D".提示:“数据库连接失败”.的主要内容,如果未能解决你的问题,请参考以下文章
VC通过ADO连接的SQLServer 怎么向数据库中插入空值?
获取“多步操作产生错误。检查每个状态值。”在 SQL Server 2008 中使用 ADO 时出错
vs2010 MFC +win7下的程序 在win7上正常运行,Server2008就出错(ADO数据库连接出错)
delphi怎样在ADO里用ADOproc调用数据库sql server存储过程?,用ADODATASET或者ADOQUERY又怎样调用存储过程?