导航:首页 > 编程大全 > vc连接access数据库失败

vc连接access数据库失败

发布时间:2023-02-23 13:24:38

『壹』 vc连接access2003出错,头都大了runtime错误。。。跪求!!在线等

数据库编程的思路都是一致的:打开数据库连接-》执行SQL语句-》获得查询结果-》关闭数据库连接,不同的数据库访问技术有不同的要求,比如用C API诘问MySql数据库的时候还得释放查询结果集。
ODBC访问数据库得配置数据源

现在用VC、MFC访问数据库常用的技术是ADO,很实用!

导入ADO库
#import "c:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace rename("EOF", "adoEOF")
2、用导入的动态库的指针操作数据库.
打开数据库连接
_ConnectionPtr m_pConn; // 数据库连接指针
// 创建Conneciton对象
m_pConn.CreateInstance(_T("ADODB.Connection"));
用ConnectionPtr 的open方法m_pConn->Open(_bstr_t(m_sConn),
_T(""), _T(""), lOptions));
m_sConn为你连接数据库的信息,你应该按照你的要求打开数据库

然后你用打开的那个连接进行操作数据库。比如
_RecordsetPtr pRec = m_pConn->Execute(_bstr_t(pszSql), NULL, CmdText);
pszSql 就你要操作数据库的SQL语句。在这个SQL语句里你可以创建表、更新表等。

用ADO访问的时候要求初始他COM库和释放COM对象
// 初始化COM环境(库)
::CoInitialize(NULL);
//释放COM对象
::CoUninitialize();

ODBC访问数据库
配置ODBC数据源:打开控制面板下的“数据源”,弹出“ODBC数据源管理器”,选择DSN选项卡-》添加->你选择你的SQL Server选项,单击完成。如图然后你再按照向导提示添加。

代码中用ODBC访问数据库你得加上afxdb.h头文件
用CDataBase 类连接数据库、CRecordSet类查询记录。
现在在VC访问数据库常用的是ADO访问,你可以找一下我前面的回答有ADO访问数据库的步骤。

CDataBase m_cODBCDb;
用CDataBase类的OpenEx()函数打开数据库连接。连接字符串你自己构造一下。
定义一个与上面数据库相关的查询对象
CRecordSet m_cODBCRec(&m_cODBCDb);
用这个查询对象的open方法就可以执行SQL语句与数据库交互了;

『贰』 VC6.0连接ACCESS数据库

连接前再加上这句
::CoInitialize(NULL);
另外m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;\Data Source=zhu.mdb", "","",adModeUnknown中的那个\D是手误还是?
程序结束的时候再调用
::CoUninitialize();

『叁』 vc连接ACCESS数据库

你自己得先设置一下数据库才行...
在控制面板里选择管理工具,打开数据源(ODBC),这时弹出ODBC数据源管理器对话框。
打开系统DNS选项卡,点击添加,选择Micorsoft Access Driver(*mdb),点击完成后,再输入数据源名和说明。(这里你下的是人家的代码,他的数据源名称可能是给定的,因此你得找到他使用的数据源名才行)。

然后在选择数据库(你下载的源码中带的数据库的路径)。

这样才算设置好。。。

『肆』 VC 无法连接数据库,求大神指点。

看看连接字符串

『伍』 VC++6.0如何连接ACCESS2007

用ADO的方式连接数据库:具体做法如下
1、在工程中导入下面两个文件ADOConn.h和ADOConn.cpp(见后面)
2、在需要调用数据库的CPP文件开始包含头文件 #include "ADOConn.h"(数据库连接的代码已封装到ADOConn.cpp中的OnInitADOConn方法)
3、按照数据库连接-》数据库操作-》断开连接的步骤调用(以从数据库中获取数据为例)
ADOConn m_ADOConn1; // 定义ADOConn类对象
m_ADOConn1.OnInitADOConn(); //连接数据库
CString sql1;
sql1.Format("select top 20 职务,count(职务) as NameCount from tb_holidays group by 职务 order by 'NameCount' desc");
//设置查询语句
m_ADOConn1.m_pRecordset = m_ADOConn1.GetRecordSet((_bstr_t)sql1); //查询
while(!m_ADOConn1.m_pRecordset->adoEOF)
{
CString temp;
//从数据库中取得数据
temp=(char*)(_bstr_t)m_ADOConn1.m_pRecordset->GetCollect("职务");

m_ADOConn1.m_pRecordset->MoveNext(); //将记录集指针移动到下一条记录
}
m_ADOConn1.ExitConnect(); //断开数据库连接

////////////////////////ADOConn.cpp//////////////////////////////////////////////
#include "stdafx.h"
#include "ADOConn.h"

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

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

ADOConn::ADOConn()
{

}

ADOConn::~ADOConn()
{

}

BOOL ADOConn::OnInitADOConn()
{
//初始化OLE/COM库环境
::CoInitialize(NULL);
try
{
//创建connection对象
//下面语句等效于:m_pConnection.CreateInstance("ADODB.Connection");
char path[MAX_PATH];
CString strPath;
::GetMoleFileName(NULL,path,MAX_PATH);
strPath=path;
strPath=strPath.Left( strPath.ReverseFind(_T('\\'))+1 );//去掉绝对路径后的PersonManage.exe
strPath = strPath + "PersonManage.mdb";
m_pConnection.CreateInstance(__uuidof(Connection));
// 打开本地Access库student.mdb
CString strname;
//此处为连接Access的连接字符串,用ADO连接SQL也是此模式,不同的就是变化此处的连接字符串
strname.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Persist Security Info=False;Jet OLEDB:Database Password=123",strPath);
_bstr_t strConnect=strname;
m_pConnection->Open(strConnect,"","",adModeUnknown);
}
catch(_com_error e)
{
CString str =(char*)e.Description();
AfxMessageBox(str);
AfxMessageBox("数据库连接失败,确认数据库PersonManage.mdb是否在当前路径下且密码正确!");
ExitConnect();
return FALSE;
}
return TRUE;
}

void ADOConn::OnInitADOConnSrv(CString server)//初始化远程服务器的数据库访问连接
{
}

_RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL)
{
try
{
//连接数据库,如果connection对象为空,则重新连接数据库
if(m_pConnection==NULL)
OnInitADOConn();
//创建记录集对象
//m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset.CreateInstance("ADODB.Recordset");
//取得表中的记录
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error e)
{
e.Description();
}
//返回记录集
return m_pRecordset;
}

BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL)
{
_variant_t RecordsAffected;
try
{
//是否已连接数据库
if(m_pConnection==NULL)
OnInitADOConn();
/***********************************************************************
* connection对象的Execute方法说明如下: *
* Execute(_bstr_t CommandText,VARIANT * RecordsAffected,long Options) *
* 其中CommandText是命令字符串,通常是SQL命令 *
* 参数RecordsAffected是操作完成后所影响的行数 *
* 参数Options表示CommandText的类型。 *
* adCmdText-文本命令 *
* adCmdTable-表名 *
* adCmdProc-存储过程 *
* adCmdUnknown-未知 *
***********************************************************************/
m_pConnection->Execute(bstrSQL,NULL,adCmdText); //执行SQL语句
return true;
}
catch(_com_error e)
{
e.Description();
return false;
}
}

void ADOConn::ExitConnect()
{
//关闭记录集和连接
if(m_pRecordset!=NULL)
m_pRecordset->Close();
m_pConnection->Close();
//释放环境
::CoUninitialize();
}

int ADOConn::GetRecordCount()
{
int nCount=0;
try{

m_pRecordset->MoveFirst();
}
catch(...)
{
return 0;
}
if(m_pRecordset->adoEOF)
return 0;
while (!m_pRecordset->adoEOF)
{
m_pRecordset->MoveNext();
nCount=nCount+1;
}
m_pRecordset->MoveFirst();
return nCount;
}

///////////////////////////////ADOConn.h///////////////////////////////////////
// ADOConn.h: interface for the ADOConn class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_ADOCONN_H__B8D01B34_20DA_49AE_9FA1_664D67A28ABD__INCLUDED_)
#define AFX_ADOCONN_H__B8D01B34_20DA_49AE_9FA1_664D67A28ABD__INCLUDED_
#import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")rename("BOF","adoBOF")

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class ADOConn
{
public:
//添加一个指向Connection对象的指针
_ConnectionPtr m_pConnection;
//添加一个指向Recordset对象的指针
_RecordsetPtr m_pRecordset;

public:
int GetRecordCount();
ADOConn();
virtual ~ADOConn();

//初始化--连接数据库(本地)
BOOL OnInitADOConn();
//初始化--连接数据库(远程服务器)
void OnInitADOConnSrv(CString server);
//执行查询
_RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);
//执行SQL语句
BOOL ExecuteSQL(_bstr_t bstrSQL);
//断开数据库连接
void ExitConnect();
};

#endif // !defined(AFX_ADOCONN_H__B8D01B34_20DA_49AE_9FA1_664D67A28ABD__INCLUDED_)

我可是花了很长时间回答你这个问题哦,记得给分哦 谢谢

『陆』 vc l连接 access2007 为什么打不开数据库 代码如下

第一你必须确保连接成功 第二 你必须显示数据 如果 连第一步连接都没成功

说明有俩点做错 1 连接语句错误 第二文件路径不对 3 没有权限

阅读全文

与vc连接access数据库失败相关的资料

热点内容
4kb的txt文件差不多多少字 浏览:984
u盘文件突然变成exe 浏览:164
现在哪些学校初中有学编程的 浏览:402
word查找全选 浏览:599
开工报告附什么文件资料 浏览:150
分区工具app怎么用 浏览:212
安卓坚果云文件路径 浏览:591
sqllog文件 浏览:236
如何在电脑中找到文件路径 浏览:830
数据结构访问和查找有什么区别 浏览:401
怎么清空icloud内的数据 浏览:338
微信锁屏后音乐停止 浏览:668
applepay苹果手机卡 浏览:835
一个14mb的文件能储存多少万汉字 浏览:478
腾讯文档里如何导出数据 浏览:979
java面试题csdn 浏览:410
rpgnvp是什么文件 浏览:594
如何将一列数据复制到excel 浏览:488
sd卡怎么恢复excel文件 浏览:282
gdblinux内核多核调试 浏览:24

友情链接