① VC++连接ACCess数据库
注意加异常判断,你这个程序,如果pConn->Open是错误的或者说没有打开,那后面肯定会报错的,你可以用HRESULT hr=pConn->Open来判断, if(SUCCESS(hr)) pRst=pConn->Execute
最后释放的时候注意判断状态, if(pConn->state !=NULL) pConn->Close(),否则如果你 pConn失败的,必然会报错,注意各种异常处理
② 求解VC访问Access数据库问题~
你是想要ACCESS作为数据库用,还是用ACCESS作后台数据库自己做软件?如果做软件的话,找一些ACCESS与一些编程语言一起做的案例式的书就好了。如果学数据库就没关系吧,ACCESS不像数据库,像Office,你不如找sql Server的书学,学会了再回来用ACCESS就全都会了。但ACCESS好像基于SQL92的,与主流数据库的SQL语言有一点点区别,也少了很多高级的东西。
③ 如何在VC++中使用ACCESS数据库
很简单,建好数据库表后,到控制面板--管理工具的数据源中,添加你建数据库驱动,即是设置数据源。命个名字。以便在VC程序中连接这个数据源。就可以用了。
在类中声明一个数据库对象。
CDatabase m_database;
m_database.Open(_T("数据源名");这样就连接了数据源。
C**Recordset m_recordset;//这个记录集是和你表相联的类。关联你会吧,就是在工作区中新建一个类,该类命名为C**Recordset。选择基类CRecordset.向导会弹出一个对话框,然后你找到你建表的目录,双击你要关联的表。向导就会自动完成。这个记录集,你完全要可不要动。在程序中直接引用就形了。
m_recordset(&m_database);//记录集关联数据库。
CString csSQL;
csSQL=_T("");//字符串初始化
csSQL=_T("select * from **/*表名*/where CHEPAIHAO_ID=%d"),1);
m_recordset.Open(AFX_DB_DEFAULT_TYPE,csSQL);//打开记录集第一行。
if(m_recordset.GetRecordCount()==0)
{
csSQL.Format(_T("insert into **/*表名*/ values(%d,\'%d-%d-%d\')"),m_chepaihao,m_datatime.GetYear(),m_datatime.GetMonth,m_datatime.GetDay());
//其中m_chepaihao是与车牌编辑框相关联的字符串,m_datatime是与日期控件相关联的Time变量。
m_database.ExecuteSQL(csSQL);//
m_database.Close();
}
//这就添加了一行。
当然这是简化的主要操作。你想,如果要添加一行,一般就是在对话框中,按一个按钮,弹出令一个对话框,从这个对话框中填上车牌号,和选择日期。然后按确定按钮。即执行上面的代码,添加了一行。
自己多想点。如果会VC难不到你的。
④ VC++6.0与access数据库的连接
使用ADO方法访问access数据库:
使用ADO连接数据库是通过Connection对象的Open方法实现的,语法是:
Connection.Open Connectionstring.userID.password,openoptions
参数说明:
Connectionstring:(可选)字符串,包含连接信息
userID:(可选)字符串,包含连接时所使用的用户名称
password:(可选)字符串,包含建立连接时多用密码
openoptions:(可选)ConnectoptionEnum值,如果设置为adConnectoAsync,则异步打开连接。当连接。当连接可用时将产生ConnectComplete事件
具体的实现方法如下:
void CConnectDlg::OnInitADOConn()
{
try
{
//创建连接对象实例
m_pConnection.CreateInstance("ADODB.Connection");
//设置连接字符串
CString strConnect="DRIVER={Microsoft Access Driver (*.mdb)};\
uid=;pwd=;DBQ=shujuku.mdb;";
//使用Open方法连接数据库
m_pConnection->Open((_bstr_t)strConnect,"","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
}
void CConnectDlg::ExitConnect()
{
//关闭记录集和连接
if(m_pRecordset!=NULL)
m_pRecordset->Close();
m_pConnection->Close();
}
至于视频的我真没有了,呵呵,你个小子,怎么弄起数据库来了
⑤ 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;
}
⑥ 怎么用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数据库查询
一、使用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数据库
你自己得先设置一下数据库才行...
在控制面板里选择管理工具,打开数据源(ODBC),这时弹出ODBC数据源管理器对话框。
打开系统DNS选项卡,点击添加,选择Micorsoft Access Driver(*mdb),点击完成后,再输入数据源名和说明。(这里你下的是人家的代码,他的数据源名称可能是给定的,因此你得找到他使用的数据源名才行)。
然后在选择数据库(你下载的源码中带的数据库的路径)。
这样才算设置好。。。
⑨ VC远程连接access数据库
access本身是本地数据库,原则上不能远程访问。可以用sql 2005,然后用c++中的AD0,具体用法网络搜索C++的ADO操作 很多例子,或者用java中jdbc访问,自己看看书
⑩ 怎样用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;
}