当前位置:首页 » 数据仓库 » vc操作access数据库
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

vc操作access数据库

发布时间: 2022-06-25 09:15:52

‘壹’ 怎么用VC连接ACCESS数据库

_variant_t var; CString strName,strAdd; m_pConnection.CreateInstance(__uuidof(Connection)); m_pRecordset.CreateInstance(__uuidof(Recordset)); try{m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\My Documents\\sjk.mdb", "","",adModeUnknown);}catch(_com_error e){AfxMessageBox("数据库连接失败,确认数据库sjk.mdb是否在当前路径下!"); //return FALSE;} try{m_pRecordset->Open("SELECT * FROM biao", m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);}catch(_com_error *e){AfxMessageBox(e->ErrorMessage());} try{if(!m_pRecordset->BOF) m_pRecordset->MoveFirst();else{MessageBox("表内数据为空"); } while(!m_pRecordset->adoEOF){var = m_pRecordset->GetCollect("name"); if(var.vt != VT_NULL) strName = (LPCSTR)_bstr_t(var); var = m_pRecordset->GetCollect("add"); if(var.vt != VT_NULL) strAdd = (LPCSTR)_bstr_t(var); m_AccessList.AddString( strName + " --> "+strAdd ); m_pRecordset->MoveNext(); } m_AccessList.SetCurSel(0);}catch(_com_error *e){MessageBox(e->ErrorMessage());}m_pRecordset->Close(); m_pConnection->Close();

‘贰’ vc++连接access数据库

不是有个ado库专门连接数据库的?下面是连接字符串
pConn->Open("Driver={Microsoft Access Driver (*.mdb)};Dbq=data.mdb;","admin","123",adModeUnknown);

‘叁’ 如何用VC实现ACCESS数据库导入、导出EXCEL

两种方式:一种是手动,一种是代码或宏
一:手动导出时,右键单击要导出的表\查询\窗体等对象,选择导出,然后选择导出格式为EXCEL的某版本,再点"导出"按钮即可.手动导入时,右键单击空白处,选择导入,在导入类型中选择EXCEL,然后找到自己要导入的文件,按提示一步步做就行了
二:用宏导出,在宏窗口中,选择新建,然后在操作中选择或输入outputto,再选择对象类型\名称,输出地址等,保存宏,然后即可双击宏即可实现导出,导入则要在操作中选择或输入TransferDatabase,其它设置类同,多试几次就知道了.至于代码,将宏转换成代码就知道了

‘肆’ VC远程连接access数据库

access本身是本地数据库,原则上不能远程访问。可以用sql 2005,然后用c++中的AD0,具体用法网络搜索C++的ADO操作 很多例子,或者用java中jdbc访问,自己看看书

‘伍’ vc连接ACCESS数据库

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

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

这样才算设置好。。。

‘陆’ 在VC6.0中,如何操作Access数据库”压缩和修复数据库“功能

cdatabase*
m_pdatabase;
crecordset*
m_precordset;
m_pdatabase=new
cdatabase;
try
{
m_pdatabase->open("dbstu.mdb");
m_precordset=new
crecordset(m_pdatabase);
}
以上是建立数据库连接和数据集对象,有了m_precordset对象,就可以对数据库进行查询操作。
cstring
strselect(_t("select
*
from
["));
strselect
+=tbstu;
strselect
+=
_t("]");
m_precordset->open(dbopendynaset,strselect);
查询stuid:
sql="select
*
from
tbstu
where
stuid="+id
如果stuid是字符串类型的:
sql="select
*
from
tbstu
where
stuid='"+id+"'"
你的数据库是不是放在程序文件一个目录?如果不是修改一下。m_pdatabase->open("dbstu.mdb");
还有在文件头添加:#include

‘柒’ VC怎么查询access数据库查询

一、使用ODBC接口,在这里我们使用MFC的CDatabase类,该类是对SQLConnect等ODBC的API的封装。需要包含afxdb.h

BOOL ODBCConnect(CString strDBFile)
{
CString strConnect;
strConnect.Format(_T("ODBC;DRIVER={MICROSOFT ACCESS DRIVER (*.mdb)};UID=sa;PWD=;DBQ=%s"), strDBFile);

CDatabase db;
if(db.Open(NULL, FALSE, FALSE, strConnect))
{
//连接数据库成功
CRecordset rs(&db);
CString strSql;
strSql = _T("select * from info"); //SQL语句
rs.Open(AFX_DB_USE_DEFAULT_TYPE, strSql); //执行Sql语句(可添加删除查询等)
if(rs.IsOpen())
{
CDBVariant variant;
rs.MoveFirst();
while(!rs.IsEOF())
{
//读取记录
rs.GetFieldValue(_T("姓名"), variant);

rs.MoveNext();
}
}

db.Close();
return TRUE;
}

return FALSE;
}

二、使用ADO连接数据库,因为要使用COM,需要初始化(CoInitialize).然后就可以生成接口的对象操作,代码如下:

#import "C:Program Files/Common Files/System/ado/msado15.dll" rename("EOF", "adoEOF") //生成C++类,改变EOF函数的名称
using namespace ADODB;

BOOL ADOConnect(CString strDBFile)
{
_ConnectionPtr pConnection;
if(pConnection.CreateInstance(__uuidof(Connection)) != S_OK)
{
return FALSE;
}

CString strConnect;
strConnect.Format(_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s"), strDBFile);
if(pConnection->Open(_bstr_t(strConnect), "", "", adModeUnknown) == S_OK)
{
//连接数据库成功
_RecordsetPtr pRecordset;
if(pRecordset.CreateInstance(__uuidof(Recordset)) != S_OK)
{
pConnection->Close();
return FALSE;
}

CString strSql;
strSql = _T("select * from info");
HRESULT hr = pRecordset->Open(_bstr_t(strSql), _variant_t((IDispatch*)pConnection, TRUE), adOpenUnspecified, adLockUnspecified, adCmdUnknown);
if(hr != S_OK)
{
pConnection->Close();
return FALSE;
}
_variant_t vt;

pRecordset->MoveFirst();
while(!pRecordset->adoEOF)
{
vt = pRecordset->Fields->GetItem("姓名")->Value;

pRecordset->MoveNext();
}

pConnection->Close();
return TRUE;
}

return FALSE;
}

‘捌’ vc++中 怎样读取Access数据库

VC下利用ADO连接Access数据库

#include <iostream.h>
#import "c:\\program files\\common files\\system\\ado\\msado15.dll" no_namespace rename ("EOF", "adoEOF")

int main(){

//使用ADO连接数据库...
//---------------------------------------------------------------------------------
_ConnectionPtr m_pConnection;

CoInitialize(NULL);
m_pConnection.CreateInstance(__uuidof(Connection));

// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
// 因为它有时会经常出现一些想不到的错误。
try
{
// 打开本地Access库db1.mdb
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb","","",adModeUnknown);

}
catch(_com_error e)
{
cout<<"数据库连接失败,确认数据库db1.mdb是否在当前路径下!"<<endl;
return FALSE;
}
//-------------------------------------------------------------------------------------
//建立数据集
//-------------------------------------------------------------------------------------
_RecordsetPtr m_pRecordset;
m_pRecordset.CreateInstance(__uuidof(Recordset));

// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
// 因为它有时会经常出现一些意想不到的错误。
try
{
m_pRecordset->Open("SELECT * FROM Home2",
m_pConnection.GetInterfacePtr(), // 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)
{
//AfxMessageBox(e->ErrorMessage());
cout<<e->ErrorMessage()<<endl;
}

//--------------------------------------------------------------------------------------
//读取数据
//--------------------------------------------------------------------------------------
_variant_t var;
char *strID,*strX,*strY;
float X,Y;
try
{
if(!m_pRecordset->BOF)
m_pRecordset->MoveFirst();
else
{
cout<<"表内数据为空"<<endl;
return 1;
}

// 读入库中各字段并加入列表框中
while(!m_pRecordset->adoEOF)
{
var = m_pRecordset->GetCollect("ID");
if(var.vt != VT_NULL)
strID= _com_util::ConvertBSTRToString((_bstr_t)var); //_variant_t转字符串
var = m_pRecordset->GetCollect("X");
if(var.vt != VT_NULL)
strX=_com_util::ConvertBSTRToString((_bstr_t)var);
var = m_pRecordset->GetCollect("Y");
if(var.vt != VT_NULL)
strY=_com_util::ConvertBSTRToString((_bstr_t)var);
cout<<strID<<"is"<<strX<<" "<<strY<<endl;

m_pRecordset->MoveNext();
}
}
catch(_com_error *e)
{
cout<<e->ErrorMessage()<<endl;
}

//--------------------------------------------------------------------------------------
//关闭数据集
m_pRecordset->Close();
m_pRecordset = NULL;
//--------------------------------------------------------------------------------------
//关闭数据库连接
//--------------------------------------------------------------------------------------
if(m_pConnection->State)
m_pConnection->Close();
m_pConnection= NULL;
return 0;
}

‘玖’ 怎样用C++连接并使用access数据库

使用C++编程语言,连接对Access数据库进行操作,常用的方法有DAO和ADO两种方式,本文将介绍采用ADO的方式方位Access数据库。
先介绍一下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;
}