当前位置:文档之家› ado数据库编程实例——信息管理系统

ado数据库编程实例——信息管理系统

ado数据库编程实例——信息管理系统
ado数据库编程实例——信息管理系统

1.在StdAfx.h中添加#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") rename("BOF","adoBOF")

其中:

#import生成文件msado15.tlh,默认是有namespace ADODB {

}

所有内容都包在这个名字空间中。

用了no_namespace则生成的头文件中没有namespace,所有内容是全局的。

rename的意思就是改名了,rename("EOF","adoEOF")将EOF改名为adoEOF,以免和C语言里的EOF重名。

End Of File,在电脑的术语缩写通常为EOF,在作业系统决定资料源无更多的资料可读取。资料源通常称为档案或串流。

在C语言,或更精确地说成C标准函式库,档案存取或其它I/O 功能可能传回等于象征符号值(巨集) EOF 指示档案结束的情形发生。实际上EOF 的值通常为-1,但它依系统有所不同。巨集EOF 会在编译原始码前展开实际值给预处理器。

2.画界面,设置属性,为组件设置成员变量

3.在BOOL CADODlg::OnInitDialog()中初始化List控件

m_Grid.SetExtendedStyle(LVS_EX_FLATSB

|LVS_EX_FULLROWSELECT

|LVS_EX_HEADERDRAGDROP

|LVS_EX_ONECLICKACTIVATE

|LVS_EX_GRIDLINES);

m_Grid.InsertColumn(0,"编号",LVCFMT_LEFT,110,0);

m_Grid.InsertColumn(1,"姓名",LVCFMT_LEFT,110,1);

m_Grid.InsertColumn(2,"性别",LVCFMT_LEFT,110,2);

m_Grid.InsertColumn(3,"学历",LVCFMT_LEFT,110,3);

AddToGrid();

4.Ado数据库连接函数

void CADOConn::OnInitADOConn()

{ //1.初始化COM环境

::CoInitialize(NULL);

try

{ //2.创建连接对象实例

m_pConnection.CreateInstance("ADODB.Connection");

//3.设置连接字符串

CString strConnect="DRIVER={Microsoft Access Driver (*.mdb)};\

uid=;pwd=;DBQ=shujuku.mdb;"; //DBQ后不要空格,否则会导致连接失败//4.使用Open方法连接数据库

m_pConnection->Open((_bstr_t)strConnect,"","",adModeUnKnown);

}

//捕获异常

catch(_com_error e)

{

//显示错误信息

AfxMessageBox(e.Description());

}

}

其中:

使用ADO时要先初始化COM环境,把::CoInitialize(NULL)放在所有ADO调用的前面,一般放在函数BOOL CMyApp::InitInstance()里面,

初始化COM环境的目的是使调用COM的API工作正常,也就是在COM操作之前调用::CoInitialize或::CoInitializeEx就可以。位置不重要

5.断开数据库连接

void CADODlg::ExitConnect()

{

//关闭记录集和连接

if(m_pRecordset!=NULL)

m_pRecordset->Close();

m_pConnection->Close();

}

6.将数据库内容显示在List控件中

void CADODlg::AddToGrid()

{

//连接数据库

OnInitADOConn();

//设置查询字符串

_bstr_t bstrSQL = "select * from employees order by 编号desc";

//创建记录集指针对象实例

m_pRecordset.CreateInstance(__uuidof(Recordset));

//打开记录集

m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic, adLockOptimistic,adCmdText);

while(!m_pRecordset->adoEOF)

{

m_Grid.InsertItem(0,"");

m_Grid.SetItemText(0,0,(char*)(_bstr_t)m_pRecordset->GetCollect("编号"));

m_Grid.SetItemText(0,1,(char*)(_bstr_t)m_pRecordset->GetCollect("姓名"));

m_Grid.SetItemText(0,2,(char*)(_bstr_t)m_pRecordset->GetCollect("性别"));

m_Grid.SetItemText(0,3,(char*)(_bstr_t)m_pRecordset->GetCollect("学历"));

//将记录集指针移动到下一条记录

m_pRecordset->MoveNext();

}

//断开数据库连接

ExitConnect();

}

7.编写List控件响应函数,点击控件中的item,subitem内容会分别显示在相应编辑框中void CADODlg::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)

{

pos = m_Grid.GetSelectionMark();

m_ID = m_Grid.GetItemText(pos,0);

m_Name = m_Grid.GetItemText(pos,1);

m_Sex = m_Grid.GetItemText(pos,2);

m_Culture = m_Grid.GetItemText(pos,3);

UpdateData(FALSE);

*pResult = 0;

}

8.编写“添加”、“修改”、“删除”和“清空”按钮代码

添加按钮

void CADODlg::OnButadd()

{

UpdateData(TRUE);

if(m_ID.IsEmpty() || m_Name.IsEmpty() || m_Sex.IsEmpty() || m_Culture.IsEmpty())

MessageBox("基础信息不能为空!");

return;

}

OnInitADOConn();

_bstr_t sql;

sql = "select * from employees";

m_pRecordset.CreateInstance(__uuidof(Recordset));

m_pRecordset->Open(sql,m_pConnection.GetInterfacePtr(),adOpenDynamic, adLockOptimistic,adCmdText);

try

{

m_pRecordset->AddNew(); //添加新行

m_pRecordset->PutCollect("编号",(_bstr_t)m_ID);

m_pRecordset->PutCollect("姓名",(_bstr_t)m_Name);

m_pRecordset->PutCollect("性别",(_bstr_t)m_Sex);

m_pRecordset->PutCollect("学历",(_bstr_t)m_Culture);

m_pRecordset->Update(); //更新数据表

ExitConnect();

}

catch(...)

{

MessageBox("操作失败");

return;

}

MessageBox("添加成功");

m_Grid.DeleteAllItems(); //删除列表控件

AddToGrid();

}

修改按钮

void CADODlg::OnButmod()

{

UpdateData(TRUE);

if(m_ID.IsEmpty() || m_Name.IsEmpty() || m_Sex.IsEmpty() || m_Culture.IsEmpty()) {

MessageBox("基础信息不能为空!");

return;

}

OnInitADOConn();

_bstr_t sql;

sql = "select * from employees";

m_pRecordset.CreateInstance(__uuidof(Recordset));

m_pRecordset->Open(sql,m_pConnection.GetInterfacePtr(),adOpenDynamic, adLockOptimistic,adCmdText);

{

m_pRecordset->Move((long)pos,vtMissing);

m_pRecordset->PutCollect("编号",(_bstr_t)m_ID);

m_pRecordset->PutCollect("姓名",(_bstr_t)m_Name);

m_pRecordset->PutCollect("性别",(_bstr_t)m_Sex);

m_pRecordset->PutCollect("学历",(_bstr_t)m_Culture);

m_pRecordset->Update();

ExitConnect();

}

catch(...)

{

MessageBox("操作失败");

return;

}

MessageBox("修改成功");

m_Grid.DeleteAllItems();

AddToGrid();

}

删除按钮

void CADODlg::OnButdel()

{

OnInitADOConn();

_bstr_t sql;

sql = "select * from employees";

m_pRecordset.CreateInstance(__uuidof(Recordset));

m_pRecordset->Open(sql,m_pConnection.GetInterfacePtr(),adOpenDynamic, adLockOptimistic,adCmdText);

try

{

m_pRecordset->Move(pos,vtMissing);

m_pRecordset->Delete(adAffectCurrent);

m_pRecordset->Update();

ExitConnect();

}

catch(...)

{

MessageBox("操作失败");

return;

}

MessageBox("删除成功");

m_Grid.DeleteAllItems();

AddToGrid();

}

void CADODlg::OnButcle() {

m_ID = "";

m_Name = "";

m_Sex = "";

m_Culture = "";

UpdateData(FALSE); }

vc++中使用ado方式操作access数据库

vc++中使用ado方式操作access数据库ADO(ActiveX Data Object)是Microsoft数据库应用程序开发的新接口,是建立在OLE DB之上的高层数据库访问技术,即使你对OLE DB,COM不了解也能轻松对付ADO,因为它非常简单易用,甚至比你以往所接触的ODBC API、DAO、RDO都要容易使用,并不失灵活性。本文详细地介绍在Visual C++开发环境下如何使用ADO来进行数据库应用程序开发,并给出示例代码。为了使读者朋友都能测试本例提供的代码,我们采用Access数据库,您可以直接在我们提供的示例代码中找到这个test.mdb。程序编译运行后的效果如图一所示 图一、ADO操作ACESS数据库的界面效果图 一、实现方法 万事开头难,任何一种新技术对于初学者来说最重要的还是"入门",掌握其要点。让我们来看看ADO数据库开发的基本流程吧!它的基本步骤如下: (1)初始化COM库,引入ADO库定义文件 (2)用Connection对象连接数据库 (3)利用建立好的连接,通过Connection、Command对象执行SQL命令,或利用Recordset对象取得结果记录集进行查询、处理。 (4)使用完毕后关闭连接释放对象。 下面我们将详细介绍上述步骤并给出相关代码。 1、COM库的初始化 我们可以使用AfxOleInit()来初始化COM库,这项工作通常在CWinApp::InitInstance()的重载函数中完成,请看如下代码: BOOL CADOTest1App::InitInstance() { AfxOleInit(); ...... } 2、用#import指令引入ADO类型库 为了引入ADO类型库,需要在项目的stdafx.h文件中加入如下语句:

直接通过ADO操作ACCESS数据库

准备工作 (1)、引入ADO类 (2)、初始化COM (3)#import 包含后就可以用3个智能指针了:_ConnectionPtr、_RecordsetPtr和_CommandPtr 1.连接和关闭数据库 (1)连接 (2)、关闭

(3)、设置连接时间 2.打开一个结果集 (1)打开,首先创建一个_RecordsetPtr实例,然后调用Open()得到一条SQL语句的执行结果 (2)关闭结果集 3.操作一个结果集 (1)、遍历(读取) a)、用pRecordset->adoEOF来判断数据库指针是否已经移到结果集的末尾了;m_pRecordset->BOF判断是否在第一条记录前面:

b)、取得一个字段的值的办法有两种办法 一是 二是 (2)、添加 1.调用m_pRecordset->AddNew(); 2.调用m_pRecordset->PutCollect();给每个字段赋值 3.调用m_pRecordset->Update();确认 (3)、修改 (4)、删除 a)、把记录指针移动到要删除的记录上,然后调用 4.直接执行SQL语句,除了要用到结果集其余的大部分功能都可以直接用SQL 语言实现 (1)、用_CommandPtr和_RecordsetPtr配合

(2)、直接用_ConnectionPtr执行SQL语句 其中CommandText是命令字串,通常是SQL命令。 参数RecordsAffected是操作完成后所影响的行数, 参数Options表示CommandText中内容的类型,Options可以取如下值之一: ?adCmdText:表明CommandText是文本命令 ?adCmdTable:表明CommandText是一个表名 ?adCmdProc:表明CommandText是一个存储过程 ?adCmdUnknown:未知 5.调用存储过程 (1)、利用_CommandPtr (2)、直接用_ConnectionPtr直接调用(见4.(2)) 6.遍历数据库中的所有表名

VisualStudio2017中使用ADO访问数据库的实例

Visual Studio 2017 使用ADO访问数据库的实例 Visual Studio 2017 version 以Visual Studio 2015 和后续的Microsoft Visual Studio 更新中的进展为基础构建而成,为开发团队

提供需要的解决方案,使其接纳这种转变并开发和交付利用下一波Windows 平台创新(Windows 10) 的新式应用程序,同时在所有Microsoft 平台上支持多种设备和服务。 支持Windows 10 App 开发 敏捷项目管理(Agile Portfolio Management) 版本控制 轻量代码注释(lightweight code commenting) 编程过程 Visual Studio 2017 预览版提供的工具集非常适合生成利用下一波Windows 平台创新(Windows 10) 的新式应用程序,同时在所有Microsoft 平台上支持设备和服务。支持在Windows 10 中开发Windows 应用商店应用程序,具体表现在对工具、控件和模板进行了许多更新、对于XAML 应用程序支持新近提出的编码UI 测试、用于XAML 和HTML 应用程序的UI 响应能力分析器和能耗探查器、增强了用于HTML 应用程序的内存探查工具以及改进了与Windows 应用商店的集成。

Visual Studio 2017 预览版进行了大量改进,可帮助您在编码时提高工作效率并集中精力。某些功能首先在Visual Studio Power Tools 扩展中以试验性质出现,经过改进后才纳入到Visual Studio 中。新版本中内置了多种提高工作效率的功能,如自动补全方括号、使用快捷键移动整行或整块的代码以及行内导航。此外,Visual Studio 2017 预览版的团队资源管理器增强了主页设计,可以更简便地导航到团队协作功能,并可取消停靠“挂起更改”和“生成”,使其显示在一个单独的窗口中。 在处理大型代码文件时,可能难以了解当前所处的位置。在Visual Studio 2017 预览版中,可轻松地在两种模式之间切换滚动条的行为。在栏模式中,可更直接地查看脱字号位置等注释、更改所在位置和跟踪错误。在图模式下,滚动条显示源代码的实时预览,而将鼠标悬停

VC++使用ADO开发ACCESS数据库

VC++使用ADO开发ACCESS数据库 本文通过实例演示如何在VC++中使用ADO进行ACCESS数据库编程,并对涉及到的几个概念进行详细解释。 本文不对ADO和ACCESS的基本概念进行详细解释,主要包括以下内容: 第一部分 ADO和ADOX到底是什么,二者的作用和区别建立数据库 第二部分 ADOX创建ACCESS数据库 第三部分ADO创建ACCESS数据库的表 第四部分使用_ConnectionPtr接口开发ACCESS数据库 第五部分使用_RecordsetPtr接口开发ACCESS数据库 第一部分ADO和ADOX到底是什么,二者的作用和区别 ADO是Microsoft 最新推出的数据库访问的高层软件接口。它和Microsoft 以前的数据库访问接口DAO、RDO相比具有更大的灵活性,使用也更方便,开发效率大为提高。 ADOX是核心ADO对象的扩展库。它提供的附加对象可用于创建、修改和删除模式对象,如表和过程。要使用ADOX,则应建立对ADOX类型库的引用。ADOX 库文件名为 Msadox.dll。 通俗地讲,ADO是访问数据库的一种接口,可以使用它方便地进行数据库编程。而ADOX是微软对ADO功能的扩展,比如:可以ADOX创建数据库(而ADO 没有创建数据库的功能)。 第二部分ADOX创建ACCESS数据库 用ADOX创建access数据库方法很简单,只需要创建一个Catalog对象,然后调用它的Create方法就可以了。 例程ADOXCreateDatabase演示如何使用ADOX创建一个ACCESS数据库。 打开VC++ 6.0,新建一个基于对话框的工程ADOXCreateDatabase。在对话框IDD_ADOXCREATEDATABASE_DIALOG中添加一个编辑框IDC_DBNAME和一个按钮IDC_BTN_CREATE,编辑框用以输入数据库名称。 使用ClassWizard给编辑框创建一个CString变量m_dbName。 双击IDC_BTN_CREATE按钮,并编辑OnBtnCreate()函数如下: void CADOXCreateDatabaseDlg::OnBtnCreate() { //使输入到编辑框IDC_DBNAME的内容更新到m_dbName变量中 UpdateData(TRUE); CString str; str="d:\\"+m_dbName+".mdb"; //检查该数据库是否已经存在,如果该数据库已经存在,弹出消息框,返回//使用API函数PathFileExists()检查路径文件是否存在 //请注意:为了使用API函数PathFileExists(),需要加入

ado连接 access 数据库

ado连接 access 数据库.txt-//自私,让我们只看见自己却容不下别人。如果发短信给你喜欢的人,他不回,不要再发。看着你的相片,我就特冲动的想P成黑白挂墙上!有时,不是世界太虚伪,只是,我们太天真。直接通过ADO操作Access数据库 作者:徐景周 下载示例源码 上次经过<直接通过ODBC读、写Excel表格文件>和<直接通过DAO读、写Access 文件>两篇文章,给大家介绍了ODBC和DAO两种数据库访问技术的基本使用方法,这次要给大家介绍的是ADO数据库访问技术的使用方法。ADO(Active Data Object,活动数据对象)实际上是一种基于COM(组件对象模型)中的自动化接口(IDispatch)技术,并以OLE DB(对象连接和镶入的数据库)为基础,经过OLE DB精心包装后的数据库访问技术,利用它可以快速的创建数据库应用程序。 ADO提供了一组非常简单,将一般通用的数据访问细节进行封装的对象。由于ODBC数据源也提供了一般的OLE DB Privider,所以ADO不仅可以应用自身的OLE DB Privider,而且还可以应用所有的ODBC驱动程序。关于OLE DB和ADO的其它详细情况,读者可以自行查阅相关书籍或MSDN,这里就不一一说明了。让我们直接步入主题,如何掌握ADO这种数据库访问技术。ADO的操作方法和前面讲过的DAO的操作在很多方面存在相似之处,在这里,笔者为了更有效的说明它的使用方法,用VC6.0做了一个示例程序(AdoRWAccess),这个示例程序可以直接通过ADO来操作Access数据库,示例程序的运行效果如下图所示: 在示例程序中我们仍采用原库结构,数据库名Demo.mdb,库内表名DemoTable,表内字段名为Name(姓名)和Age(年龄)的两个字段,来构造示例程序操作所需的Access数据库,这也和上两篇文章的示例源码中的库结构相兼容。 下面让我们看看ADO数据库访问技术使用的基本步骤及方法: 首先,要用#import语句来引用支持ADO的组件类型库(*.tlb),其中类型库可以作为可执行程序(DLL、EXE等)的一部分被定位在其自身程序中的附属资源里,如:被定位在msado15.dll的附属资源中,只需要直接用#import引用它既可。可以直接在Stdafx.h文件中加入下面语句来实现: #import "c:\program files\common files\system\ado\msado15.dll" \ no_namespace \

ADO方法对Access数据库操作

一、Access数据库创建 新建一个Accesss数据库文件,然后文件--新建--空白桌面数据库,弹出下面的窗口。 点击那个小文件夹的图标,出现下面的窗口,保存类型选择2002—2003格 式,文件名,然后确定,创建。 然后在设计视图中设计数据库成下面的样式。

再在数据库中增添一些信息如下: 然后保存就可以了,记得注意一下把“表1”这个名字改过来啊。 二、在VC++中建立一个基于对话框的工程(在这里取名为sjtest) 1、在FileView中的Header Files的头文件中导入文件。(代码如下) #import "C:\Program Files\Common Files\System\ado\" no_namespace \ rename("EOF","adoEOF")rename("BOF","adoBOF")

2、在主窗口类声明两个变量。(在中) 代码:(这两个是智能指针,百度一下哈)_ConnectionPtr m_pConnection; _RecordsetPtr m_pRecordset;

3、在对话框中添加一个ListControl控件,并且将其属性中的Style设置如图 4、为list control捆绑变量m_Grid(查看—建立类向导—Add Member variable

name) 5、在CSjtestApp应用程序类中的初始化函数InitInstance()中初始化COM环境在上面添加: ::CoInitialize(NULL); 并在return之前释放:添加代码如下: ::CoUninitialize();

VC++下使用ADO访问Access数据库完整篇

VC++下使用ADO访问Access数据库完整篇 2009年10月18 | 分类: 编程开发 | 3 条评论 | 标签: Visual Studio 这次先整理一下ADO的全套流程方便有类似需求的网友参考。实际上,根据天缘的经验,接口类编程只需要遵守人家的约定就可以了,很多做软件的网友也都是忙的很,没有时间一一深究。 1、在StdAfx.h中引入ADO类支持 方法是在StdAfx.h中增加下面两句话: #include //如果需要则添加本句 #import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename ("EOF", "adoEOF") 2、初始化COM环境 在MFC中可以用AfxOleInit()或CoInitialize(NULL),该函数一般放在InitInstance()历程里。 非MFC使用用CoInitialize(NULL)。 卸载COM环境使用CoUnInitialize(),一般放在主程序的析构函数里。 这样我们就会三个指针可用:_ConnectionPtr、_RecordsetPtr和_CommandPtr,分别代表: _ConnectionPtr接口返回一个记录集或一个空指针,通常使用它来创建一个数据连接或执行一条不返回任何结果的SQL语句,对于要返回记录的操作通常使用_RecordserPtr来实现。而用 _ConnectionPtr操作时要想得到记录条数得遍历所有记录,用_RecordserPtr则不需要。 _RecordsetPtr指针是一个记录集对象。可以对记录集提供了更多的控制功能。它不一定要使用一个已经创建的数据连接,可以用一个连接串代替连接指针赋给 _RecordsetPtr的connection成员变量,让它自己创建数据连接。如果你要使用多个记录集,最好的方法是使用已经创建了数据库连接的全局 _ConnectionPtr接口,然后使用_RecordsetPtr执行存储过程和SQL语句。 _CommandPtr指针接口返回一个记录集。CommandPtr提供了一种简单方法来执行返回记录集的存储过程和SQL语句。可以利用全局 _ConnectionPtr接口,也可以在_CommandPtr接口里直接使用连接串。一次或少量数据库访问操作,一般是

VB利用ADO控件连接access数据库

VB利用ADO控件连接access数据库今天告诉大家VB利用ADO控件连接access数据库的两种方法: 一种是在 adodc1的属性里设置数据库文件的路径,这种方法的优点是简单易操作,缺点是,当源文件换了地方后,要重新设置数据库的路径,否则连接不上数据库了。 一种是用代码设置数据库的路径,这种方法的优点就是只要源文件和数据库在同一文件夹下,无论移动到哪里都能连接上。 如果没有建立好数据库的话,先建立一个数据库,然后建立一个表比如我们建的表名为message,然后把里面的字段名称和数据类型都按自己的需要设置好.然后保存就可以了. 打开Microsoft Visual Basic6.0 我用的是VB6.0,在需要调用数据库的窗体上加入一个adodc控件,默认名称为:Adodc1。默认的情况下工具栏里是没有这个控件的,可以打开工程---部件(快捷键CTRL+T),去掉只显示选定项的勾,然后勾上Microsoft ADO Data Control(OLEDB),然后确定,工具栏就会多了一个adodc的控件。 第一种方法:设置adodc1的属以连接数据库.在adodc1控件上右键--Adodc属性--使用连接字符串--生成--Microsoft Jet 4.0 OLE DB Provider--下一步--选择或输入数据库名称---找到要连接的数据库后,确定.然后记录源设置属性. 如果要把内容提交到数据库一般使用adCmdTable. 表选择要连接的表。设置完毕后就可以了. 如果我们想把内容提交到数据库.举个例子.. 在窗体建立一个文本框,设置属性中的DataSource为adodc1 DataField为要连接的数据库的字段名。如果数据库中有字段,会让你选择。

MFC通过ADO操作Access数据库

MFC通过ADO操作Access数据库 我在《VC知识库在线杂志》第十四期和第十五期上曾发表了两篇文章——“直接通过ODBC读、写Excel表格文件”和“直接通过DAO读、写Access文件”,先后给大家介绍了ODBC和DAO两种数据库访问技术的基本使用方法,这次要给大家介绍的是ADO数据库访问技术的使用方法。ADO(Active Data Object,活动数据对象)实际上是一种基于COM(组件对象模型)的自动化接口(IDispatch)技术,并以OLE DB(对象连接和镶入的数据库)为基础,经过OLE DB精心包装后的数据库访问技术,利用它可以快速的创建数据库应用程序。 ADO提供了一组非常简单,将一般通用的数据访问细节进行封装的对象。由于ODBC数据源也提供了一般的OLE DB Privider,所以ADO不仅可以应用自身的OLE DB Privider,而且还可以应用所有的ODBC驱动程序。关于OLE DB和ADO的其它详细情况,读者可以自行查阅相关书籍或MSDN,这里就不一一说明了。让我们直接步入主题:如何掌握ADO这种数据库访问技术。ADO的操作方法和前面讲过的DAO的操作在很多方面存在相似之处,在这里,笔者为了更有效的说明它的使用方法,用VC6.0做了一个示例程序——AdoRWAccess,这个示例程序可以直接通过ADO来操作Access数据库,示例程序的运行效果如下图所示:

在示例程序中我们仍采用原库结构,数据库名Demo.mdb,库内表名DemoTable,表内字段名为Name(姓名)和Age(年龄)的两个字段,来构造示例程序操作所需的Access数据库,这也和上两篇文章的示例源码中的库结构相兼容。 下面让我们看看ADO数据库访问技术使用的基本步骤及方法: 首先,要用#import语句来引用支持ADO的组件类型库(*.tlb),其中类型库可以作为可执行程序(DLL、EXE等)的一部分被定位在其自身程序中的附属资源里,如:被定位在msado15.dll的附属资源中,只需要直接用#import引用它既可。可以直接在Stdafx.h文件中加入下面语句来实现: #import "c:\program files\common files\system\ado\msado15.dll" \ no_namespace \ rename ("EOF", "adoEOF") 其中路径名可以根据自己系统安装的ADO支持文件的路径来自行设定。当编译器遇到#import语句时,它会为引用组件类型库中的接口生成包装类,#import语句实际上相当于执行了API涵数LoadTypeLib()。#import语句会在工程可执行程序输出目录中产生两个文件,分别为*.tlh(类型库头文件)及*.tli(类型库实现文件),它们分别为每一个接口产生智能指针,并为各种接口方法、枚举类型,CLSID等进行声明,创建一系列包装方法。语句no_namespace说明ADO对象不使用命名空间,rename ("EOF", "adoEOF")说明将ADO中结束标志EOF改为adoEOF,以避免和其它库中命名相冲突。 其次,在程序初始过程中需要初始化组件,一般可以用CoInitialize(NULL);来实现,这种方法在结束时要关闭初始化的COM,可以用下面语句CoUnInitialize();来实现。在MFC中还可以采用另一种方法来实现初始化COM,这种方法只需要一条语句便可以自动为我们实现初始化COM和结束时关闭COM 的操作,语句如下所示: AfxOleInit(); 接着,就可以直接使用ADO的操作了。我们经常使用的只是前面用#import 语句引用类型库时,生成的包装类.tlh中声明的智能指针中的三个,它们分别是_ConnectionPtr、_RecordsetPtr和_CommandPtr。下面分别对它们的使用方法进行介绍: 1、_ConnectionPtr智能指针,通常用于打开、关闭一个库连接或用它的Execute

MFC使用ADO读写Access数据库

MFC使用ADO读写Access数据库实例 ADO(ActiveX Data Object)是Microsoft数据库应用程序开发的新接口,是建立在OLE DB之上的高层数据库访问技术,即使你对OLE DB,COM不了解也能轻松对付AD O,因为它非常简单易用,甚至比你以往所接触的ODBC API、DAO、RDO都要容易使用,并不失灵活性。本文详细地介绍在Visual C++开发环境下如何使用ADO来进行数据库应用程序开发,并给出示例代码。为了使读者朋友都能测试本例提供的代码,我们采用Access 数据库,您可以直接在我们提供的示例代码中找到这个test.mdb 一、实现方法 万事开头难,任何一种新技术对于初学者来说最重要的还是"入门",掌握其要点。让我们来看看ADO数据库开发的基本流程吧!它的基本步骤如下:(1)初始化COM库,引入ADO库定义文件 (2)用Connection对象连接数据库 (3)利用建立好的连接,通过Connection、Command对象执行SQL命令,或利用Recordset对象取得结果记录集进行查询、处理。 (4)使用完毕后关闭连接释放对象。 下面我们将详细介绍上述步骤并给出相关代码。 1、COM库的初始化 我们可以使用AfxOleInit()来初始化COM库,这项工作通常在CWinApp::I nitInstance()的重载函数中完成,请看如下代码:

2、用#import指令引入ADO类型库 为了引入ADO类型库,需要在项目的stdafx.h文件中加入如下语句: 这一语句有何作用呢?其最终作用同我们已经十分熟悉的#include类似,编译的时候系统会为我们生成msado15.tlh,ado15.tli两个C++头文件来定义ADO库。 需要读者朋友注意的是:您的开发环境中msado15.dll不一定在这个目录下,请按实际情况修改;在编译的时候可能会出现如下警告,对此微软在MSDN中作了说明,并建议我们不要理会这个警告:msado15.tlh(405) : warning C4146: unary minus operator appli ed to unsigned type, result still unsigned。 3、创建Connection对象并连接数据库 为了首先我们需要添加一个指向Connection对象的指针_ConnectionPtr m_pConnect ion,下面的代码演示了如何创建Connection对象实例及如何连接数据库并进行异常捕捉:

Visual C++环境下ADO控件访问access数据库

Visual C++环境下ADO控件访问数据库 DBGrid数据表格控件以其短小精悍而深受大家的喜爱,但其如何在Visual C++中使用 却很少有文章提及,本文将VC下使用DBGrid的具体步骤简要地介绍给大家。一.前期准备 为了实现DBGrid控件的自动捆绑,我们需要建立一个数据库和与之关联的数据源,本例中我们用Access建立数据库mydata.mdb,在数据库中新建一张表users,包含三个字段username,address,email,并输入多条记录。 在控制面板ODBC数据源中建立名称为test的系统DSN(注意是系统DNS非用户DNS),并将其指向mydata.mdb 二.创建工程 新建一个基于对话框的MFC AppWizard(exe)工程,取名为GridTest,并在AppWizard 的第2步中确认已经提供ActiveX控件支持。 三.插入控件 我们需要插入Microsoft RemoteData Control与DBGrid Control两个控件,方法如下: 1)选择菜单->Project->Add to Project->Components and Controls Gallery 2)在部件选择对话框中进入Registered ActiveX Controls 3)选择Microsoft RemoteData Control,单击Insert按钮,确认后对类进行配置(可以按 默认),我们不做任何修改单击OK按钮,插入完成。 以同样的步骤,插入DBGrid Control控件。 4)回到VC工作区,我们在ResourceView中选择GridTest对话框模板(即ID号为IDD_GRIDTEST_DIALOG的对话框模板)此时我们发现在Controls工具条中已经新增了两个按钮,分别表示刚才插入的两个控件。 5)现在我们在模板中画出这两个控件,如图所示:

VC之ADO访问ACCESS数据库

1.引入ADO类 #import "c:\program files\common files\system\ado\msado15.dll" \ no_namespace \rename ("EOF", "adoEOF") 2.在资源视图里面添加按钮(如图,并设置相应的ID)及其他资源: 方法:打开Dialog对话框IDD_XPDLG_DIALOG 并加入一个Button,双击这个Button,生成该按钮单击处理 函数。 3.编辑CMyAccessApp类: A.在CMyAccessApp类里面初始化COM AfxOleInit(); m_pConnection.CreateInstance(__uuidof(Connection)); 在ADO操作中建议语句中要常用try...catch()来捕获错误信息 try { // 打开本地Access库db1.mdb m_pConnection->ConnectionTimeout =5; m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb","","",adModeUnknown); } catch(_com_error e) { AfxMessageBox(TEXT("数据库连接失败,确认数据库db1.mdb是否在当前路径下!"));// //VS2005编译器只能写成AfxMessageBox(_T("test"));才能使用 return FALSE; } (其中我的数据库的表名是dbtable,数据库是db1) 附:常用的数据库连接方法: (1)通过JET数据库引擎对ACCESS2000数据库的连接 m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\test.mdb","","",adModeUnknown); (2)通过DSN数据源对任何支持ODBC的数据库进行连接: m_pConnection->Open("Data Source=adotest;UID=sa;PWD=;","","",adModeUnknown); (3)不通过DSN对SQL SERVER数据库进行连接: m_pConnection->Open("driver={SQL

vb连接access数据库常用的方法两种示例

这里以链接access数据库为例。 第一部分是通过语句链接,第二部分是通过控件链接 一、 通过语句链接数据库,然后把相应的数据赋值给某个文本框就行了。 1.首先定义几个全局变量 Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim constr As String 2.给这些变量赋值,方便链接数据库 constr = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=D:\EffectSolution\科学效应数据库.mdb" 红色部分写你自己的数据库路径。 3.打开数据库 cn.open constr 打开表 rs.open “select * from 效应表where id=5“,cn 取字符串并赋值给相应的文本 Text1.text=rs.fields(“效应和现象名称”) Text2.text=rs.fields(“文字解说”) 关闭表 rs.close 关闭数据库 cn.close 注意,最后两步骤一定要有,不然下次打开数据库的时候会提示出错的,这样的话,在窗口上建立两个文本框就够了。但是,在此之前还有一步一定要做,

点"工程"-"引用"-找到"Microsoft ActiveX Data Object 2.6 ",如图所示: 显示的结果如下图所示:

通过与效应表对比发现显示正确。 总体代码如下: Private Sub Form_Load() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim constr As String constr = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=D:\EffectSolution\科学效应数据库.mdb" '空格加短下划线表示续行 cn.open constr rs.open "select * from 效应表where id =5", cn Text1.Text = rs.fields("效应和现象名称") Text2.Text = rs.fields("文字解说")

VB6连接ACCESS数据库

1:首先肯定是建立数据库(设置数据库名和密码,要将数据库文件和VB中创建的工程文件放在同一目录下。) 2:呵呵~~你要知道的关键的问题:如何连接Access数据库(方法有:数据控件、数据对象、数据环境设计器等)我都不想写得详细拉.(楼主你想知道多一点加我Q:413237613) 你可以参考一下我在网站查找到相关的资料啊.看看对你有没帮助啊:再不明白加我Q拉. 1、使用控件 ①Data控件 Data控件是Visual Basic6.0中的一个内置数据控件,可以通过设置Data控件的connect、DatabaseName、RecordSource属性实现对数据库的连接和访问。通过Data控件连接加密的数据库的方法有两种: 一种方法是在设计状态时,在“属性窗口”中将Data控件的connect属性的缺省值”Access”改为”;pwd=1234”即可,其它属性的设置方法与没有加密的Access数据库的连接相同。 另一种方法是在运行时,通过代码对connect属性赋值来实现。如: Data1.connect=”;pwd=1234” Data1.DatabaseName=APP.path+“\ssgl.mdb” 其中,”1234”为Access数据库文件ssgl.mdb的密码,下同。 ②Adodc控件 Adodc控件是一个ActiveX控件,它使用Microsoft ActiveX Data Objects(ADO)创建到数据库的连接。使用Adodc控件之前,要先将Adodc控件添加到控件工具箱中。方法如下:在VB 6.0种选择“工程”菜单,再点击“部件”菜单项,在弹出的“部件”对话框中选中“Microsoft ADO Data Control6.0(OLEDB)”选项即可。 通过Adodc控件连接加密的数据库的方法也有两种: 一种方法是在设计状态时,在“属性窗口”中,对Adodc控件的ConnectionString属性设置一个有效的连接字符串,并在连接字符串后增加上”;Jet OLEDB:DataBase password=1234”,再设置Adodc控件的CommandType、RecordSource的属性就可以创建到加密的数据库的连接了。 另一种方法是在运行时,通过代码动态地设置ConnectionString、CommandType和RecordSource属性来创建连接。只要在ConnectionString属性的有效连接字符串后增加上”; Jet OLEDB:DataBase password=1234”即可。 2、使用数据对象

用ado连接access

用ado连接access 及相应的一些处理收藏 vc知识库 用ado对数据库access的连接 11)用控制面板中的管理工具添加.mdb的access数据库在系统DSN中添加Driver do Microsoft access (*。mdb) 1)-----------------------------------加入ADO支持库---------------------------- 在StdAfx.h中 //加入ADO支持库 #import "c:\program files\common files\system\ado\msado15.dll" \ no_namespace \ rename ("EOF", "adoEOF") 2)--------------------------------初始化com,创建ado连接等操作----------------------------- 在CWinApp.h即 在class CAdoRW AccessApp : public CWinApp中 // 定义ADO连接变量指针 _ConnectionPtr m_pConnection; 在CWinApp.h即 在BOOL CAdoRW AccessApp::InitInstance()中 声明AfxOleInit();//初始化com,创建ado连接等操作 m_pConnection.CreateInstance(__uuidof(Connection)); 3)--------------------打开本地Access库Demo.mdb-------------------------- 在BOOL CAdoRW AccessApp::InitInstance()中 try { //打开本地Access库Demo.mdb m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Demo.mdb", "","",adModeUnknown);//注意代码的拼写错误!!! } catch(_com_error e) { AfxMessageBox("数据库连接失败,确认数据库Demo.mdb是否在当前路径下!"); return FALSE; } 4)-----------------------------------创建记录集对象--------------------------------------- 在newadoDlg.h中 即class CAdoRW AccessDlg : public CDialog中声明 _RecordsetPtr m_pRecordset;// 定义记录集变量指针

ado连接 access 数据库

ado连接access 数据库.txt-//自私,让我们只看见自己却容不下别人。如果发短信给你喜欢的人,他不回,不要再发。看着你的相片,我就特冲动的想P成黑白挂墙上!有时,不是世界太虚伪,只是,我们太天真。直接通过ADO操作Access数据库 作者:徐景周 下载示例源码 上次经过<直接通过ODBC读、写Excel表格文件>和<直接通过DAO读、写Access 文件>两篇文章,给大家介绍了ODBC和DAO两种数据库访问技术的基本使用方法,这次要给大家介绍的是ADO数据库访问技术的使用方法。ADO(Active Data Object,活动数据对象)实际上是一种基于COM(组件对象模型)中的自动化接口(IDispatch)技术,并以OLE DB(对象连接和镶入的数据库)为基础,经过OLE DB精心包装后的数据库访问技术,利用它可以快速的创建数据库应用程序。 ADO提供了一组非常简单,将一般通用的数据访问细节进行封装的对象。由于ODBC数据源也提供了一般的OLE DB Privider,所以ADO不仅可以应用自身的OLE DB Privider,而且还可以应用所有的ODBC驱动程序。关于OLE DB和ADO的其它详细情况,读者可以自行查阅相关书籍或MSDN,这里就不一一说明了。让我们直接步入主题,如何掌握ADO这种数据库访问技术。ADO的操作方法和前面讲过的DAO的操作在很多方面存在相似之处,在这里,笔者为了更有效的说明它的使用方法,用VC6.0做了一个示例程序(AdoRWAccess),

这个示例程序可以直接通过ADO来操作Access数据库,示例程序的运行效果如下图所示: 在示例程序中我们仍采用原库结构,数据库名Demo.mdb,库内表名DemoTable,表内字段名为Name(姓名)和Age(年龄)的两个字段,来构造示例程序操作所需的Access数据库,这也和上两篇文章的示例源码中的库结构相兼容。 下面让我们看看ADO数据库访问技术使用的基本步骤及方法: 首先,要用#import语句来引用支持ADO的组件类型库(*.tlb),其中类型库可以作为可执行程序(DLL、EXE等)的一部分被定位在其自身程序中的附属资源里,如:被定位在msado15.dll的附属资源中,只需要直接用#import引用它既可。可以直接在Stdafx.h文件中加入下面语句来实现: #import "c:\program files\common files\system\ado\msado15.dll" \ no_namespace \

使用ADO操作Access数据库

使用ADO操作Access数据库 2018/10/23 ADO对象 1、Access内嵌的VBA是用ADO技术开发数据库应用的主要工具,ADO是目前Microsoft通用的数据访问技术; 2、ADO对象模型包括:Connection、Recordset、Record、Command、Parameter、Field、Property、Stream、Error九个对象; 3、主要的ADO对象介绍: 1)Connection对象:ADO对象模型中的最高级对象,用来实现应用程序与数据源的连接; 2)Command对象:主要在VBA中使用SQL语句访问、查询和修改数据库中的数据,实现Recordset对象无法实现的操作(数据表级别的操作),可以使用DoCmd代替; 3)Recordset对象:ADO最为常用的、重要的对象,可以访问表和查询对象,返回的记录储存在Recorderset对象中,主要执行的操作: ①查询数据表中的数据; ②在数据表中添加数据; ③更新数据表中的数据; ④删除数据表中的特定数据; 在Access中引用ADO对象 1、Access引用ADO的步骤: ①声明、初始化Connection对象; ②创建Recordset对象,编程完成各种操作; ③关闭ADO对象; 2、声明、初始化Connection对象 '声明Connection对象:一般使用cn做为变量的命名前缀; Dim coName As ADODB.Connection '初始化Connection对象,连接当前数据库; Set cnName = CurrentProject.Connection 3、声明和打开Recordset对象 1)声明、初始化Recordset对象 Dim rsName As ADODB.Recoreset set rsName = new ADODB.Recordset 2)打开一个Recordset对象 使用Recordset的Open方法可以打开数据表、查询对象、或直接引用SQL查询语句 rsName.Open source, ActiveConnection, CursorType,LockType,Option

mfc使用ado连接access数据库

1.设置数据源 打开控制面板--->系统和安全--->管理工具--->ODBC Data Sources(32 bit) 这里需要注意的是,vc6.0是32位的,因此这里的数据源也必须是32位的,否则是连接不上的, 这里我使用的是ACCESS数据库,数据源的配置如下: 2.创建包含数据库的MFC对话框(其它也可以)工程,新建ADOConn类 在工程中我们需要新建一个普通类ADOConn

然后在ADOConn类头文件中加入以下导入声明和变量、函数声明:ADOConn.h--------------------------------------------------------------------------------- #import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")//引入ADO库文件 public: _ConnectionPtr m_pConnection;//连接对象指针 _RecordsetPtr m_pRecordset;//记录集对象指针 _CommandPtr m_pCommand;//命令对象指针 ADOConn(); virtual ~ADOConn(); BOOL OnInitADOConn(CString Connstr);//初始化连接数据库 BOOL ExecuteSQL(CString strSQL);//执行SQL语句 BOOL ExecuteProc(CString ProcName);//执行存储过程 BOOL GetCollect(CString FieldName,CString & strDest);//获得某个字段的值 BOOL GetRecordSet(CString strSQL);//获得记录集 int GetRecordCount();//获得记录数 //判断表TableName中是否存在字段KeyName的值为KeyValue的记录 BOOL RecordExist(CString TableName,CString KeyName,CString KeyValue); BOOL MoveFirst();//移动到第一条记录 BOOL MoveNext();//移动到下一条记录 BOOL Close();//关闭记录集 BOOL CloseADOConnection();//关闭连接 void dump_com_error(_com_error &e);//错误详细信息 ADOConn.h---------------------------------------------------------------------------------

相关主题
文本预览
相关文档 最新文档