怎样用C++连接并使用access数据库
两种办法,一种是 用SQL,另一种是ADO
1、用SQL添加数据:
insert into 表名(字段1,字段2,字段3)
values(值01,值02,值03)
例如:
docmd.runsql"insert into EmpTable(Name,age,Duty,Salary) values('王明',35,'外贸总监',12500)"
2、用ADO的办法:
ADO比较复杂,给你一个完整的例子吧:
Dim strSqlfitjc As String
strSqlfitjc = "select * from *表"
Set RSfitjc = New ADODB.Recordset ‘定义一个ADO连接,连进数据库
RSfitjc.Open strSqlfitjc, cn, adOpenKeyset, adLockOptimistic ’打开连接
RSfitjc.addnew '添加一个纪录
RSfitjc.Fields("配件编号") = “style” ‘给每个字段赋值
.Update ’储存赋值的新纪录
.Close 关闭连接
End With
环境配置:
1. 先安装你的Access数据库(微软Office 2016中含有或者单独下载,下载地址:http://msdn.itellyou.cn/ 左侧选择应用程序一栏,注意选择下载64位,即标有X64的)
特殊情况查看意外解决方案 (A)
2. 安装Microsoft Access database engine 2007,他的作用暂时可理解为我们所写的程序与Access之间的沟通桥梁--“传话人”。
Microsoft Access database engine 2010(可以安装,但后面的代码是2007的,所以暂时建议使用2007)
下载地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=13255
Microsoft Access database engine 2007
下载地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=23734
特殊情况查看意外解决方案 (C)
连接与测试代码:
本例代码使用VS2010以上版本测试
建议去文末下载写好的含注释的测试代码看。
1. 新建你的数据库表
打开Access
选择空白数据库,为你的数据库中表项起一个名字 如 Test
设计你的存储表格
本例附有测试表格database1.accdb
2.
在你程序的stdafx.h头文件中加入
#import"C:/ProgramFiles/CommonFiles/System/ADO/msado15.dll"
rename("EOF","adoEOF"), rename("BOF","adoBOF")
(如果加载失败的话,去c:\program files\common files\system\ado查看是否有msado15.dll)
3.测试代码介绍
// LinkDBForHX.cpp : 定义控制台应用程序的入口点。
[cpp] view plain copy
#include "stdafx.h"
#include//atlstr
#include
using namespace ADODB;
using namespace std;
class AdoAccess {
public:
_ConnectionPtr HX_pConnection; // 数据库指针
_RecordsetPtr HX_pRecordset; // 命令指针
_CommandPtr HX_pCommand; // 记录指针
void OnInitADOConn() {
::CoInitialize(NULL);
try
{
HX_pConnection.CreateInstance(__uuidof(Connection));//等价于 //HX_pConnection.CreateInstance("ADODB.Connection");
//此句包含定位你数据库的所需的访问信息
_bstr_t strConnect = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Database1.accdb;Persist Security Info=False ";
//测试//_bstr_t strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Database1.accdb;Persist Security Info=False";//此句包含定位你数据库的所需的访问信息
//测试//_bstr_t strConnect = "Provider=Microsoft.ACE.OLEDB.12.0;Driver = { Microsoft Access Driver(*.mdb, *.accdb) }; DBQ =Database1.accdb;Persist Security Info=False ";
//此句包含定位你数据库的所需的访问信息
//连接master数据库,无密码。
HX_pConnection->Open(strConnect,"","",adModeUnknown); //连接数据库
cout << "连接成功,并获得智能指针" << endl;
}
catch (_com_error e)
{
cout <<e.Description() << endl;
}
}
void ExitConnect() {
if (HX_pRecordset != NULL)
HX_pRecordset->Close();
HX_pConnection->Close();
::CoUninitialize();
}
};
int main()
{
AdoAccess dataBase;
//初始化
dataBase.OnInitADOConn();
dataBase.HX_pRecordset.CreateInstance("ADODB.Recordset");
//选择名为Test的表格
dataBase.HX_pRecordset->Open("select * from Test",
dataBase.HX_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
int i = 0;
//读取其中的name字段所有数据,并显示
while (!dataBase.HX_pRecordset->adoEOF)
{
_variant_t var;
string strValue;
var = dataBase.HX_pRecordset->GetCollect("name");
//其他类似,都是通过HX_pRecordset传递SQL语句执行查找、添加、删除等命令
if (var.vt != VT_NULL)
strValue = _com_util::ConvertBSTRToString((_bstr_t)var);
++i;
cout << "name " << i << " " << strValue << endl;;
dataBase.HX_pRecordset->MoveNext();
}
//卸载com组件
dataBase.ExitConnect();
int xxxx = 0;
cout << "输入数字结束
";
cin >> xxxx;
return 0;
}
意外情况解决方案
A 描述:未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序。
请正确安装环境配置中的第一步
B 若A无法解决问题。
选择 该应用程序的 应用程序池 ------>选择高级设置--------->启用32位应用程序 ------->true
操作如下:
按下win + R
在弹出的对话框中输入inetmgr,然后按回车键
选择最左侧
点击应用程序池
再点击下图的DefaultAPPPool
选择高级设置
选择启用32位应用程序 ---置为True.
最后选择确认保存
C 重新安装 Microsoft Access databaseengine 2007
D 程序若提示缺少符号集,请下载相关符号集或者在联网状态下动态加载
先介绍一下ADO,ADO (ActiveX Data Objects) 是一个用于存取数据源的COM组建。它提供了编程语言和统一数据访问方式OLE DB的一个中间层。允许开发人员编写访问数据的代码而不用关心数据库是如何实现的,而只用关心到数据库的连接。
在程序的开始,首先导入所需要的库:#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF", "adoEOF") ,这里重命名EOF是必要的,因为典型的VC应用都已经定义了EOF作为常数-1。
完整的程序如下,以注释的形式来对程序进行解释:
_ConnectionPtr m_pConnection; //连接access数据库的链接对象
_RecordsetPtr m_pRecordset; //结果集对象
CoInitialize(NULL); //初始化
m_pConnection.CreateInstance(__uuidof(Connection)); //实例化对象
//连到具体某个mdb ,此处的的Provider语句因Access版本的不同而有所不同。
try
{
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=MyAccess.mdb","","", adModeUnknown);
}
catch(_com_error e)
{
AfxMessagebox(_T("数据库连接失败!"));
return;
}
m_pRecordset.CreateInstance(__uuidof(Recordset)); //实例化结果集对象
//执行sql语句
try
{
CString sql= _T("select * from Patient");
m_pRecordset->Open(sql, m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
if(m_pConnection->State)
{
m_pConnection->Close();
m_pConnection= NULL;
}
return ;
}
//处理结果集
try
{
//若结果为空,结束
if(m_pRecordset->BOF)
{
AfxMessageBox_T(("表内数据为空!"));
if(m_pConnection->State)
{
m_pRecordset->Close();
m_pRecordset = NULL;
m_pConnection->Close();
m_pConnection= NULL;
}
return ;
}
//游标定位到第一条记录
m_pRecordset->MoveFirst();
_variant_t var; //从结果集中取出的数据放到var中
char *name;
while(!m_pRecordset->adoEOF)
{
var= m_pRecordset->GetCollect("Name"); //要取字段的名称。
if(var.vt != VT_NULL)
{
name= _com_util::ConvertBSTRToString((_bstr_t)var); //转换成char*类型
}
string MyName = name;
m_pRecordset->MoveNext();
}
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMssage());
}
//退出程序时的处理 ,关闭数据库的相关操作
if(m_pConnection->State)
{
m_pRecordset->Close();
m_pRecordset = NULL;
m_pConnection->Close();
m_pConnection= NULL;
}
怎样用C++连接并使用access数据库
使用C++编程语言,连接对Access数据库进行操作,常用的方法有DAO和ADO两种方式,本文将介绍采用ADO的方式方位Access数据库。先介绍一下ADO,ADO (ActiveX Data Objects) 是一个用于存取数据源的COM组建。它提供了编程语言和统一数据访问方式OLE DB的一个中间层。允许开发人员编写访问数据的代码而不用关心数据...
C或C++语言连接ACCESS数据库代码是什么
include<stdio.h> include<string.h> typedef struct{ char name[20];int number;int grade;int class;float mark[10];float average;}T;void show(T *student,int *tp,int n) \/* 把成绩显示在屏幕上 *\/ { int i,j;char a[3]=" ";printf("***\\n");printf(" name number grade ...
c++如何连接access数据库
设置好了 现在可以直接连了呀 <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> < set conn=server.createobject("adodb.connection")dbpath=server.mappath("完整的access库路径+库名")conn.open "provider=microsoft.jet.oledb.4.0;data source=" & dbpath > ...
C++中如何连接Access数据库?
\/\/ 设置连接字符串,必须是BSTR型或者_bstr_t类型 _bstr_t strConnect= "Provider=SQLOLEDB;Server=(local);Database=student;";\/\/若数据库在网络上则Server为形如(192.168.1.5,3340)m_pConnection->Open(strConnect,"","",adModeUnknown);\/\/Access这里没有设置密码,参数二是用户名,三是 密...
怎么样能用c++同时操作两个数据库本地的是access 远程的是MSSQL...
最后,关于时间的使用,在ACCESS中通常采用“SELECT * FROM AAAA WHILE TIME=”,在MSSQL中则应使用“SELECT * FROM AAAA WHERE TIME=”,以确保查询语句的正确性。通过遵循上述步骤和注意事项,您将能成功运用C++同时操作本地Access数据库和远程MSSQL数据库,实现数据的高效管理和操作。
如何使用C++将数据写入Access
设置好数据源后, 调用odbc API,(CNKI上有一篇这样的文章,用C++调用ODBC API访问ACCESS数据库的) 直接访问数据库,
c++builder连接ACESS数据库并调用和显示怎么实现啊
用adotable连接access。其余的操作你就当成是在调用普通的数据库。
C++中连接ACCESS的问题
#import "msado15.dll" rename_namespace("ADOCG") rename("EOF", "EndOfFile")2.有没有 进行 数据库的连接 Sql.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source = XH.mdb");以上代码看不出什么 问题,不知道是不是逻辑问题,你在这个函数 设置个断点跟下,看是哪里出了问题 ...
C语言连接Access数据库如何实现???标准的c语言
1、C\/C++与数据库交互,像 mssql\/ mysql \/ oracle 等,一般都有成熟的第三方库,这些库里面无非就是封装了与数据库通讯的方式和通讯协议搜一下要用的数据库相关的 API 文档,会说得很清楚任何文件都是二进制数据,关键是数据存储的组织方式通用扩展名的文件,像gif\/doc\/jpg\/wav,格式都是固定的。
请问各位大侠、怎么用C语言连接access数据库、最好能详细点儿写出步骤...
你先配置数据库 http:\/\/zhidao.baidu.com\/question\/209967914.html 然后举个例子,连接SQL 我连access的给你看一下 别忘了 mfc AfxOleInit(); 或者 win32 coInitial什么东东(初始化com的)\/\/ 打开数据库 strDBClass.Format(_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Jet OLEDB:...