MFC中如何连接access数据库?

作者&投稿:直底 (若有异议请与网页底部的电邮联系)
mfc中如何连接access数据库 求详细步骤~

access我没连过 我只连过sql2000
我把我那时候找到的资料发上来给你参考下 看看可以借鉴不
MFC 连接SQL SERVER(ODBC方式)
1、建立数据库

这一步比较简单,直接打开SQL Server Management Studio,根据自己需要设计数据库中的表,及其之间的依赖关系等等!要想设计一个完美的数据库,就必须了解数据库的基本知识。这里不再具体说了。这里我们假设我们的数据库名字为Test01

2、配置数据源

数据库设计建立完成后,它只是单独的几张表,我们并不能在程序中去访问它,因为程序并不知道数据库在哪里。因此,就要在应用程序跟数据库之间建立连接。

配置数据源说通俗了就是为数据库创建一个对外的窗口,应用程序通过这个窗口来访问数据库中的数据。具体配置步骤为:

1) 打开 控制面板--〉管理工具--〉数据源,在用户DSN面板选择 “添加”

2) 在数据源驱动程序中选择 “SQL Server” --〉完成,即打开 “创建到SQL Server 的新数据源”

3) 在“数据源名称”中填入名称,我们填 TestSQL01,然后选择 服务器,在其中选择要连接到的SQL Server服务器。(如果你电脑的SQL Server服务打开的话,就会有自己的主机名。或者选择网络上的某个SQL Server。

4) 点击 下一步 配置认证信息



5) 配置完后点击 下一步, 选中 “更改默认的数据库为”复选框,在下拉中选择自己刚才建立的要连接的数据库。 (这一步很重要,一般一个Server上会有多个数据库,如果不更改数据源的默认数据库,你 建立的数据源将连接到默认的数据库,这样就会造成程序中执行SQL语句时“对象名无效”的错误,即找不到你指定的数据表等)

6) 选择完数据库后直接 下一步--〉完成 就完成了数据源的配置。接下来会出现配置数据源的基本信息,可以通过 “测试数据源”来测试数据源是否配置成功。

3、 数据库的连接

建立完数据库,又配置好了数据源,接下来就可以在程序中通过数据源来访问数据库了。

1) 首先要在程序中引入MFC ODBC数据库的定义文件 #include

2) 定义CDataBase数据库对象, CDataBase m_db;

3) 利用CDataBase类的OpenEx函数建立和数据库的连接;

m_db.OpenEx(_T("DSN=TestSQL01;"),CDatabase::noOdbcDialog);

/*这里的TestSQL01 即为步骤2中建立的数据源,然后根据OpenEx函数格式填入参数,主要是用户名、密码之类,这里没有设置,所以就没有*/

具体连接还要捕捉OpenEx可能抛出的异常:

TRY
{
m_db.OpenEx(_T("DSN=TestSQL01;"),CDatabase::noOdbcDialog);
rs.m_pDatabase = &m_db;
}
CATCH(CDBException,ex)
{
AfxMessageBox(ex->m_strError);
AfxMessageBox(ex->m_strStateNativeOrigin);
}
AND_CATCH(CMemoryException,pEx)
{
pEx->ReportError();
AfxMessageBox(_T("memory exception"));
}
AND_CATCH(CException,e)
{
TCHAR szError[100];
e->GetErrorMessage(szError,100);
AfxMessageBox(szError);
}
END_CATCH



4、 数据库操作

在完成了上面的步骤后,就可以使用SQL语句对数据库进行操作了。基本的操作有 查询、添加、修改、删除等。这里主要说一下查询,其他操作都与添加步骤类似。

1)查询

查询的基本步骤可以看下面的这段代码:

CString sql = _T("SELECT Password FROM UserInfo WHERE (UserID = 123“) //要执行的SQL语句

CString psd; //存放查询结果
TRY
{
rs.Open(AFX_DB_USE_DEFAULT_TYPE,sql); //打开查询记录
rs.GetFieldValue(_T("Password"),psd); //得到数据
}
CATCH(CDBException,ex)
{
AfxMessageBox(ex->m_strError);
AfxMessageBox(ex->m_strStateNativeOrigin);
}
AND_CATCH(CMemoryException,pEx)
{
pEx->ReportError();
AfxMessageBox(_T("memory exception"));
}
END_CATCH
2)插入

相对于查询,插入、删除、更改操作就简单得多了。 CString sql = _T("USE Test01 INSERT UserInfo(UserID,UserName) VALUES(" 123, 'Bob');

try
...{
m_db.ExecuteSQL(sql);
}
..............

刚刚写了个access的系统

.cpp中

//hxx函数主要用于打开数据库连接
void ADOConn::OnInitADOConn()
{
::CoInitialize(NULL); //why初始化OLE/COM库环境
try
{
m_pCon.CreateInstance("ADODB.Connection"); //创建Connection对象
m_pCon->ConnectionTimeout=3; //设置连接延时
//设置连接字符串why
//m_pCon->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=InfoMan.mdb","","",adModeUnknown);
m_pCon->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=InfoMan.mdb;Persist Security Info=False;Jet OLEDB:Database Password=1234","","",adModeUnknown);}
catch(_com_error e) //捕获异常
{
AfxMessageBox(e.Description()); //显示错误信息
}
}

.h中
#import "G:\\MY_PRO\\InfoMan\\msado15.dll"no_namespace\
rename("EOF","adoEOF")

_ConnectionPtr m_pCon; //添加一个指向Connection对象的指针
_RecordsetPtr m_pRs; //添加一个指向Recordset对象的指针

比如在你的工程目录中建一个 dbf\vir.mdb     //Access数据库,然后你需要做以下操作:

1.在StadAfx.h里面添加#include <afxdb.h> //新加入头文件,用于CDatabase类。

2.在StadAfx.h最后的#endif上添加#import "msado15.dll" no_namespace rename("EOF","rsEOF")

这时,你要把msado15.dll拷到与dbf同级的目录,也就是工程目录里,当然你可以该路径

3.在你自己的工程里,比如MyProc是你建的工程,添加代码

CMyPorcApp::CMyProcApp(){

CoInitialize(NULL); 

SQLConfigDataSource(NULL,ODBC_ADD_DSN, "Microsoft Access Driver (*.mdb)",\

"DSN=MyImage;DBQ=dbf\\vir.mdb;DEFAULTDIR=dbf"); //注册本地数据库数据源

m_db.OpenEx("DSN=MyImage;;",CDatabase::noOdbcDialog);//MyImage是数据源名称

}

4.在前面的函数体之前创建全局变量CDatabase m_db; CRecordset m_rec(&m_db);

5.使用数据库{

CString strSQL="select * from virdb";  

BSTR bstrSQL=strSQL.AllocSysString();

m_rec.Open(CRecordset::dynaset,strSQL);

while(!m_rec.IsEOF()) 

{

// 使用数据库的代码,读出来的数据都是字符串型的

CString MyVirable;

m_rec.GetFieldValue("字段名",MyVirable);  //将某个字段的当前行的值读到MyVirabl中

// ......

m_rec.MoveNext(); //将记录移到下一行

}

}

本程序是自动注册数据源的,当然可以手动注册数据源,关于如何注册数据源并不麻烦,叙述起来不太方面,你就参考其他的吧。不过建议不用手动注册数据源,这样你地程序移植性不好.



比如在你的工程目录中建一个 dbf\vir.mdb //Access数据库,然后你需要做以下操作:
1.在StadAfx.h里面添加#include <afxdb.h> //新加入头文件,用于CDatabase类。
2.在StadAfx.h最后的#endif上添加#import "msado15.dll" no_namespace rename("EOF","rsEOF")
这时,你要把msado15.dll拷到与dbf同级的目录,也就是工程目录里,当然你可以该路径
3.在你自己的工程里,比如MyProc是你建的工程,添加代码
CMyPorcApp::CMyProcApp(){
CoInitialize(NULL);
SQLConfigDataSource(NULL,ODBC_ADD_DSN, "Microsoft Access Driver (*.mdb)",\
"DSN=MyImage;DBQ=dbf\\vir.mdb;DEFAULTDIR=dbf"); //注册本地数据库数据源
m_db.OpenEx("DSN=MyImage;;",CDatabase::noOdbcDialog);//MyImage是数据源名称
}
4.在前面的函数体之前创建全局变量CDatabase m_db; CRecordset m_rec(&m_db);
5.使用数据库{
CString strSQL="select * from virdb";
BSTR bstrSQL=strSQL.AllocSysString();
m_rec.Open(CRecordset::dynaset,strSQL);
while(!m_rec.IsEOF())
{
// 使用数据库的代码,读出来的数据都是字符串型的
CString MyVirable;
m_rec.GetFieldValue("字段名",MyVirable); //将某个字段的当前行的值读到MyVirabl中
// ......
m_rec.MoveNext(); //将记录移到下一行
}
}

本程序是自动注册数据源的,当然可以手动注册数据源,关于如何注册数据源并不麻烦,叙述起来不太方面,你就参考其他的吧。不过建议不用手动注册数据源,这样你地程序移植性不好.

access我没连过 我只连过sql2000
我把我那时候找到的资料发上来给你参考下 看看可以借鉴不
MFC 连接SQL SERVER(ODBC方式)
1、建立数据库

这一步比较简单,直接打开SQL Server Management Studio,根据自己需要设计数据库中的表,及其之间的依赖关系等等!要想设计一个完美的数据库,就必须了解数据库的基本知识。这里不再具体说了。这里我们假设我们的数据库名字为Test01

2、配置数据源

数据库设计建立完成后,它只是单独的几张表,我们并不能在程序中去访问它,因为程序并不知道数据库在哪里。因此,就要在应用程序跟数据库之间建立连接。

配置数据源说通俗了就是为数据库创建一个对外的窗口,应用程序通过这个窗口来访问数据库中的数据。具体配置步骤为:

1) 打开 控制面板--〉管理工具--〉数据源,在用户DSN面板选择 “添加”

2) 在数据源驱动程序中选择 “SQL Server” --〉完成,即打开 “创建到SQL Server 的新数据源”

3) 在“数据源名称”中填入名称,我们填 TestSQL01,然后选择 服务器,在其中选择要连接到的SQL Server服务器。(如果你电脑的SQL Server服务打开的话,就会有自己的主机名。或者选择网络上的某个SQL Server。

4) 点击 下一步 配置认证信息

5) 配置完后点击 下一步, 选中 “更改默认的数据库为”复选框,在下拉中选择自己刚才建立的要连接的数据库。 (这一步很重要,一般一个Server上会有多个数据库,如果不更改数据源的默认数据库,你 建立的数据源将连接到默认的数据库,这样就会造成程序中执行SQL语句时“对象名无效”的错误,即找不到你指定的数据表等)

6) 选择完数据库后直接 下一步--〉完成 就完成了数据源的配置。接下来会出现配置数据源的基本信息,可以通过 “测试数据源”来测试数据源是否配置成功。

3、 数据库的连接

建立完数据库,又配置好了数据源,接下来就可以在程序中通过数据源来访问数据库了。

1) 首先要在程序中引入MFC ODBC数据库的定义文件 #include <afxdb.h>

2) 定义CDataBase数据库对象, CDataBase m_db;

3) 利用CDataBase类的OpenEx函数建立和数据库的连接;

m_db.OpenEx(_T("DSN=TestSQL01;"),CDatabase::noOdbcDialog);

/*这里的TestSQL01 即为步骤2中建立的数据源,然后根据OpenEx函数格式填入参数,主要是用户名、密码之类,这里没有设置,所以就没有*/

具体连接还要捕捉OpenEx可能抛出的异常:

TRY
{
m_db.OpenEx(_T("DSN=TestSQL01;"),CDatabase::noOdbcDialog);
rs.m_pDatabase = &m_db;
}
CATCH(CDBException,ex)
{
AfxMessageBox(ex->m_strError);
AfxMessageBox(ex->m_strStateNativeOrigin);
}
AND_CATCH(CMemoryException,pEx)
{
pEx->ReportError();
AfxMessageBox(_T("memory exception"));
}
AND_CATCH(CException,e)
{
TCHAR szError[100];
e->GetErrorMessage(szError,100);
AfxMessageBox(szError);
}
END_CATCH

4、 数据库操作

在完成了上面的步骤后,就可以使用SQL语句对数据库进行操作了。基本的操作有 查询、添加、修改、删除等。这里主要说一下查询,其他操作都与添加步骤类似。

1)查询

查询的基本步骤可以看下面的这段代码:

CString sql = _T("SELECT Password FROM UserInfo WHERE (UserID = 123“) //要执行的SQL语句

CString psd; //存放查询结果
TRY
{
rs.Open(AFX_DB_USE_DEFAULT_TYPE,sql); //打开查询记录
rs.GetFieldValue(_T("Password"),psd); //得到数据
}
CATCH(CDBException,ex)
{
AfxMessageBox(ex->m_strError);
AfxMessageBox(ex->m_strStateNativeOrigin);
}
AND_CATCH(CMemoryException,pEx)
{
pEx->ReportError();
AfxMessageBox(_T("memory exception"));
}
END_CATCH
2)插入

相对于查询,插入、删除、更改操作就简单得多了。 CString sql = _T("USE Test01 INSERT UserInfo(UserID,UserName) VALUES(" 123, 'Bob');

try
...{
m_db.ExecuteSQL(sql);
}
..............


东芝fc-2000ac打印机怎么设置连接网络
1、首先添加打印机。2、直接点击不在需求列表。3、点击通过IP地址查找打印机,然后点击下一步。4、在第二栏主机地址中输出在打印机连接后设置的静态IP,端口自动填写,不需操作,点击下一步。5、直接点击下一步,共享设置可以在以后设置,6、然后解压一个压缩包名称为Toshiba_CSW1601WPD01,解压到当前...

热处理中ac和fc是什么意思
AC是指空冷,FC是指水冷。空冷器是独立的一套设备,占地面积小,可以按用户要求放置室内或室外,与设备连接可以用软管也可以用钢管。水压可通过调节阀调整,由分水包上压力表显示,使用前将进高频设备的所有截门关闭,通过自身循环后,由分水包下排污阀将水排尽,确保设备使用中无杂物,从而不会造成堵塞...

连接fc,ac,若bf平分角∠
(1)∵DE ∥ AB,∴∠DFB=∠ABF.∵BF平分∠ABC,∴∠ABF=∠DBF.∴∠DFB=∠DBF.∴DF=DB.∵BC=2,D是BC的中点,∴BD=1.∴DF=1;(2)∵DB=DF=DC=1,∴∠DFC=∠DCF.在△BCF中,∠CBF+∠BFD+∠DFC+∠FCB=180°,∴∠BFD+∠DFC=180°÷2=90°,即∠BFC=90°.

...点f c是圆o上两点且弧AF=弧FC=弧CB,连接AC,
学霸救命!如图ab是圆o的弦点fc是圆o上两点且弧AF=弧FC=弧CB,连接AC,AF,过点C做CD⊥AF交AF延长线于点D垂足为D.(1)CD是圆O的切线;(2)若CD=2根号3,求圆O的半径10... 请教第二题!学霸救命!如图ab是圆o的弦 点f c是圆o上两点且弧AF=弧FC=弧CB,连接AC,AF,过点C做CD⊥AF交AF延长线于点D垂...

FC,VC,TC,MC,AFC,AC是什么意思(西方经济学)
在西方经济学中,有多个关键的概念用于理解和分析经济活动。首先,FC(FixedCost)指的是那些不随生产量变动而固定的费用,如租金和员工的基本工资。紧接着是VC(VariableCost),即随着生产量增加而变化的成本,如原材料和直接劳动成本。总成本(TC)由这两部分组成,等于FC加上VC。MC(MarginalCost)是...

...AB的延长线上的一点,E在AB上,连接DE并延长AC于F且EF=FC
证:因为ef=fc 所以∠e=∠c 又因为∠bed=∠fec 所以∠c=∠bed 因为cb垂直于ad ∠abc=∠cbd=90° 所以∠D+∠E=∠D+∠C=90° 又因为∠A+∠C=90° 所以∠A=∠D 所以AFd为等腰 所以Af=df

如图,在⊙O中,直径AB垂直于弦CD,垂足为E,连接AC,将△ACE沿AC翻折得到△...
解:(1)直线FC与⊙O相切.理由如下:连接OC.∵OA=OC,∴∠1=∠2.由翻折得,∠1=∠3,∠F=∠AEC=90°.∴∠2=∠3,∴OC∥AF.∴∠OCG=∠F=90°.∴直线FC与⊙O相切. (2)在Rt△OCG中, ,∴∠COG=60°. 在Rt△OCE中, . ∵直径AB垂直于弦CD,∴ .

如图,在四边形ABCD中,AD平行于BC,点E是AB上一个懂点,若∠B=60°,AB=...
在BC上截取BF=BE,连接EF ∵∠B=60° ∴△BEF是等边三角形 ∴BE=BF=EF ∠BEF=∠EFB=60° ∴∠EFC=180°-∠EFB=120° ∵AB=BC ∴AB-BE=BC-BF 即AE=FC ∵AD∥BC ∴∠DAE+∠B=180° 即∠DAE=120°=∠EFC ∴∠ADE+∠AED=60° ∵∠AED+∠FEC=180°-∠DEC-∠BEF=180°-60°-...

...AB=AC,点D为BC边中点,CE\/\/AB,BE分别交AD、AC于点F、G,连接FC...
因为AB=AC,点D为BC边中点,所以CF=BF 因为△CFG≌△EFC 则有FG\/CF=CF\/EF,解得EF=4.5

东芝2110ac如何扫描web
1、首先,打开电脑上的控制面板,找到硬件和声音选项,点击查看设备和打印机,打开查看设备和打印机。2、打开设备和打印机,在打印机列表中找到我们连接到网络的这台打印机,并点击选中该打印机。3、点击鼠标右键,选中属性,查看打印机属性,在弹出的菜单中找到打印机的IP地址,复制该IP地址。4、进入一体...

大冶市17121894436: MFC怎么连接access数据库 -
汲爱锋派: 1、在MFC的工程中添e69da5e6ba9062616964757a686964616f31333330336433加一个access文件2、在MFC中添加记录集 try { m_pConn.CreateInstance("ADODB.Connection"); _bstr_t Connection ="Provider=Microsoft.Jet.OLEDB.4.0;...

大冶市17121894436: mfc中如何连接access数据库 求详细步骤 -
汲爱锋派: 比如在你的工程目录中建一个 dbf\vir.mdb //Access数据库,然后你需要做以下操作: 1.在StadAfx.h里面添加#include <afxdb.h> //新加入头文件,用于CDatabase类. 2.在StadAfx.h最后的#endif上添加#import "msado15.dll" no_namespace ...

大冶市17121894436: 数据库和MFC连接
汲爱锋派: 不管是Access还是SQL Server,在MFC下都可以通过ADO进行数据库连接. Access连接的时候只需要传入数据库文件的存放路径就行; SQL Server连接的时候,得传入服务器名、数据库名、用户名、用户密码等参数. ADO封装类在网上有下的,你可以搜一下! 有问题加Q说!

大冶市17121894436: 在线等,求VC++/MFC中与access数据库连接的方法,详细一点,最好给我步骤.谢谢各位大侠!!
汲爱锋派: CString strDriver = _T("MICROSOFT ACCESS DRIVER (*.mdb)"); CString strDsn; CString strFile = _T("c:\\MateralAssist.mdb"); strDsn.Format(_T("ODBC;DRIVER={%s};UID=sa;PWD=;DBQ=%s"),strDriver,strFile); if(!m_db.Open(NULL,...

大冶市17121894436: VS2010 MFC如何连接Access数据库? -
汲爱锋派: 有很多办法了 我常用的两种办法,一个是用cdatabase类建一个对象,调用成员函数open函数可以连接到数据源了,用crecordset对象将前面的database对象传给他,然后调用crecordset对象的open函数,可以连接具体表 还有一个办法初学者好直接用,就是直接创建一个类继承crecordset对象,然后会提示你连接数据源和默认表,后头建一个该类对象就可以用他的成员函数直接调用了,用open重新打开某个表,movefirst和movenext,getfieldvalue来取值 你可以去网上下个程序看看

大冶市17121894436: 如何在MFC中关联ACCESS数据库,并根据最后需要显示出ACCESS数据中的某几列 -
汲爱锋派: 以往的回答都是说在默认值里设置,这种方法在还没有输入记录的时候确实是一个好方法,但是若已经输入了记录(特别是已输入了不少的记录)的话,此方法就行不通了,在此我有一个方法可供你们参考一下(特别是对输入了不少的记录更会觉得方便):1.在“查询”中设计一个“更新查询”.在查询设计器中,把要修改的表显示出来,在下面的字段栏中选择要修改或添加的字段名.在“更新到”栏中输入1,并保存查询.2. 执行查询,在资料表中的相应栏位即可得到所需要的值.此方法即简便又实用(特别是对已输入较多的记录而言),并且执行一次后即可将该查询删除.

大冶市17121894436: MFC对话框如何读取access数据库
汲爱锋派: 首先在stdafx.h中添加如下 #import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","rsEOF") 上面的路径根据你自己的更改 然后在你要查询的地方写如下代码: CoInitialize(NULL); _...

大冶市17121894436: MFC如何用ADO连接有密码的Access数据库? -
汲爱锋派: AfxEnableControlContainer(); ::CoInitialize(NULL); cnn=NULL; cnn.CreateInstance(__uuidof(Connection)); cnn->ConnectionString="uid=admin;pwd=111;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=spkc.mdb;"; cnn->Open(L"",L"",L"",adCmdUnspecified);你参考下 希望对你有帮助

大冶市17121894436: VS2010 MFC如何连接Access数据库? -
汲爱锋派: AfxOleInit() _ConnectPtr m_pConnect;指针try{m_pConnection.CreateInstance("ADODB.Connection");bstr_t strConnect="DRIVER={Microsoft Access Driver (*.mdb,*.accdb)};\uid=;pwd=;DBQ=mail.accdb;";m_pConnection->Open(strConnect,"","",adModeUnknown);}catch(_com_error e){AfxMessageBox(e.Description());}

大冶市17121894436: MFC做的登录界面连接access数据库 -
汲爱锋派: 刚刚写了个access的系统.cpp中//hxx函数主要用于打开数据库连接 void ADOConn::OnInitADOConn() {::CoInitialize(NULL); //why初始化OLE/COM库环境 try { m_pCon.CreateInstance("ADODB.Connection"); //创建Connection对象 m_pCon->...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网