ADO连接SQL 最有效的几个步骤和方法
- 格式:docx
- 大小:20.79 KB
- 文档页数:5
Toad使用经典教程Toad是一种功能强大的数据库管理工具,专门用于管理和操作关系型数据库。
它提供了一个直观的用户界面,使得管理数据库和编写SQL查询变得更加容易和高效。
下面是一个关于如何使用Toad的经典教程。
第一部分:安装和配置Toad2.运行安装程序,按照提示进行安装。
确保你选择安装与你的操作系统和数据库版本兼容的版本。
通常情况下,你会需要提供数据库服务器的连接信息。
3. 完成安装后,启动Toad。
第一次启动时,你可能需要进行一些配置,如选择默认的数据库连接配置和设置。
第二部分:数据库连接和导航1. 在Toad的主界面中,点击“连接”按钮或选择菜单中的“连接”选项。
弹出一个连接对话框。
2.在连接对话框中,输入数据库服务器的连接信息,如服务器地址、端口号、用户名和密码等。
点击“测试连接”按钮来确保连接正常。
3.如果连接成功,点击“连接”按钮返回主界面。
此时,你将会看到左侧的导航栏显示了数据库的层次结构,包括数据库、表、视图、存储过程等。
4.可以使用导航栏快速浏览和选择需要操作的数据库对象。
3.输入完SQL查询后,点击运行按钮执行查询。
查询的结果将会以表格的形式展示在结果窗口中。
4.你可以通过结果窗口的工具栏来对查询结果进行排序、过滤、导出等操作。
第四部分:数据管理和操作1.在导航栏中选择一个表对象。
右键点击该表对象,选择“查看数据”选项,将会打开一个数据浏览窗口。
2.在数据浏览窗口中,你可以对表中的数据进行增删改查等操作。
通过工具栏的按钮或右键菜单可以实现数据的导入、导出和复制等功能。
3. 若要执行复杂的数据操作,如批量导入、导出等,你可以使用Toad提供的数据导入和导出工具。
第五部分:性能优化和调试3. 若要对数据库进行性能优化,你可以使用Toad提供的性能监视工具。
它可以帮助你分析SQL查询的性能,并提供优化建议。
第六部分:其他功能和插件1. Toad还提供了一些其他有用的功能,如数据库比对、数据模型设计等。
C++连接SQL1.引⼊ADO#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")2.创建连接数据库类(两个指针及四个成员函数)class CADOConn{public:CADOConn();virtual ~CADOConn();_ConnectionPtr m_pConnection; //对象智能指针连接操作数据库_RecordsetPtr m_pRecordPtr; //Recordset对象指针(记录集)//初始化连接数据库,执⾏查询,执⾏SQL语句,断开连接void OnInitDBConnect();_RecordsetPtr &GetRecordSet(_bstr_t bstrSQL);BOOL ExecuteSQL(_bstr_t bstrSQL);void ExitConnect();};3.四个成员函数实现void CADOConn::OnInitDBConnect(){::CoInitialize(NULL); //初始化OLE/COM库环境try{//创建connection对象m_pConnection.CreateInstance("ADODB.Connection");//设置连接字符串_bstr_t strConnect="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=⾃⼰数据库填写处;Data Source=."; //SERVER和UID,PWD的设置根据实际情况来设置m_pConnection->Open(strConnect,"","",adModeUnknown);}catch(_com_error e){AfxMessageBox(e.Description()); //显⽰错误信息}}_RecordsetPtr & CADOConn::GetRecordSet(_bstr_t bstrSQL){try{if(m_pConnection==NULL) //连接对象不存在OnInitDBConnect(); //重新连接m_pRecordPtr.CreateInstance(_uuidof(Recordset)); //创建记录集对象//执⾏查询,等到记录集m_pRecordPtr->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);}catch(_com_error e) //捕捉异常{AfxMessageBox(e.Description()); //显⽰错误信息}return m_pRecordPtr; //返回记录集}BOOL CADOConn::ExecuteSQL(_bstr_t bstrSQL){try{if(m_pConnection==NULL)OnInitDBConnect();m_pConnection->Execute(bstrSQL,NULL,adCmdText);return true;}catch (_com_error e){AfxMessageBox(e.Description());return false;}}void CADOConn::ExitConnect(){if(m_pConnection!=NULL){m_pRecordPtr->Close();m_pConnection->Close();}::CoUninitialize();}链接:提取码:x2p5免费分享,但是X度限制严重,如若链接失效点击链接或搜索加群群号。
ADO对象方法属性详解ADO(ActiveX Data Objects)是用于访问数据库的一组组件和技术,它提供了一种统一的方法来访问不同的数据源,如关系型数据库、Excel文件、文本文件等。
ADO包含了许多对象、方法和属性,以下是一些常用的ADO对象、方法和属性的详细解释。
一、ADO对象:1. Connection(连接对象):用于与数据库建立连接,并管理与数据库的通信。
2. Recordset(记录集对象):用于存储和访问数据库中的数据,可以通过执行SQL查询语句来检索数据。
二、Connection对象的常用方法:1. Open:打开与数据库的连接。
2. Close:关闭与数据库的连接。
三、Connection对象的常用属性:1. ConnectionString:设置或返回连接字符串,用于指定要连接的数据库及其相关的连接参数。
2. State:获取连接的当前状态(例如已打开、已关闭)。
四、Recordset对象的常用方法:1. Open:打开查询结果集,可以通过执行SQL查询语句或调用存储过程来获取数据。
2. Close:关闭结果集。
五、Recordset对象的常用属性:1. EOF(End of File):判断当前记录是否为结果集的最后一条记录。
2. BOF(Beginning of File):判断当前记录是否为结果集的第一条记录。
3. RecordCount:获取结果集中记录的数量。
4. Fields:获取一个集合对象,该集合包含了结果集中的字段。
5. AbsolutePosition:获取或设置当前记录的绝对位置。
6. Source:获取或设置返回记录集的源(如SQL查询语句)。
六、其他常用方法和属性:1. Execute方法:用于执行SQL查询语句,并返回一个记录集对象。
2. CreateParameter方法:用于创建参数对象,以便在执行存储过程时传递参数。
3. Errors属性:返回一个Errors集合对象,其中包含了数据访问过程中发生的错误信息。
ADO数据库操作在ADO(ActiveX Data Objects)中,可以使用各种方法和属性来执行数据库操作。
ADO是一种在Microsoft平台上用于访问数据的技术,可以用于连接到各种数据库系统,包括Microsoft Access、SQL Server、Oracle等。
首先,要使用ADO进行数据库操作,我们需要建立与数据库的连接。
可以使用ADO的Connection对象来实现。
例如,对于Microsoft Access 数据库,可以使用以下代码来建立连接:```Dim conn As New ADODB.Connectionconn.ConnectionString ="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=C:\path\to\database.mdb"conn.Open```在上面的代码中,我们创建了一个Connection对象,并设置了连接字符串来指定数据库的路径。
然后,我们调用Open方法来打开连接。
建立连接后,就可以执行各种数据库操作了。
以下是一些常见的数据库操作方法:1.执行SQL查询:```Dim rs As New ADODB.Recordsetrs.Open "SELECT * FROM table", conn```上面的代码中,我们创建了一个Recordset对象,并使用Open方法执行了一个SQL查询。
2.插入记录:```conn.Execute "INSERT INTO table (field1, field2) VALUES ('value1', 'value2')"```上面的代码中,我们使用Execute方法执行了一个插入记录的SQL语句。
3.更新记录:```conn.Execute "UPDATE table SET field1 = 'new value' WHERE condition"```上面的代码中,我们使用Execute方法执行了一个更新记录的SQL语句。
在VB6.0里如何使用ADO与SQL SERVER进行连接与存取
方法
林和平
【期刊名称】《电脑开发与应用》
【年(卷),期】2001(014)010
【摘要】@@ ADO数据访问技术是目前比较先进的和较常使用的技术,在VB6.0里如何使用ADO数据库访问,介绍方法如下:
【总页数】1页(P46)
【作者】林和平
【作者单位】集美大学
【正文语种】中文
【中图分类】TP3
【相关文献】
1.基于ADO的SQL Server图形数据库的存取方法 [J], 周毅仁;王克鸿;韩杰
2.VB6.0的ADO控件与SQL Server2000的数据交换 [J], 郭辉
3.VB6.0与SQL Server 2000的数据库连接方案比较 [J], 姚晓玲;孔德瑾
4.VB6.0下用ADO实现对SQLServer中图像数据的远程存取 [J], 郭伟;张威
5.使用链接服务器连接SQLServer和Oracle使用连接把Oracle数据集成到SQLServer应用程序中 [J], Michael Otey; 徐瑾(译)
因版权原因,仅展示原文概要,查看原文内容请购买。
VB与数据库连接的几种方法在VB中,与数据库进行连接的方式有多种,可以根据不同的需求选择不同的方法。
下面将介绍几种常用的连接数据库的方法。
1.使用ADO连接数据库:ADO(ActiveX Data Objects)是一种用于连接数据库的COM组件,它提供了一套广泛的API,用于与各种数据库进行交互。
使用ADO连接数据库的基本步骤如下:(1)引入ADO组件:在VB的项目中,需要通过引入ADO组件来使用ADO的功能。
在“项目”菜单中选择“引用”,然后勾选“微软ActiveX数据对象库”即可。
(2)创建连接对象和命令对象:使用ADO连接到数据库需要创建两个核心对象,即连接对象和命令对象。
连接对象用于建立与数据库的连接,命令对象用于执行SQL语句。
(3)打开数据库连接:使用连接对象的Open方法来打开数据库连接。
(4)执行SQL语句:使用命令对象的Execute方法执行SQL语句,可以执行查询、插入、更新、删除等操作。
(5)关闭数据库连接:使用连接对象的Close方法关闭数据库连接。
2.使用ODBC连接数据库:ODBC(Open Database Connectivity)是一种通用的数据库访问接口,可以连接各种类型的数据库,包括Access、SQL Server、MySQL等。
VB提供了对ODBC的支持,可以使用ODBC连接数据库。
(1)设置ODBC数据源:在Windows的“控制面板”中选择“管理工具”->“ODBC数据源”,配置一个ODBC数据源,指定要连接的数据库。
(2)在VB中连接数据库:在VB中使用ODBC连接数据库需要通过ODBC数据源名来建立连接。
例如:```Dim conn As New ADODB.Connectionconn.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\myDB.mdb;Uid=Admin;Pwd=; "conn.Open```(3)执行SQL语句:通过ADO连接对象执行SQL语句,与使用ADO 连接数据库的方式相同。
VC中利用ADO访问数据库基本步骤:1, 引入ADO库文件在stdafx.h中引入ADO库文件,以使编译器能够正确编译。
#import "C:\\Program Files\\Common Files\\system\ado\msado15.dll" no_namespacerename("EOF","adoEOF")现在不需要添加额外的头文件,就可以直接使用ADO了。
2,初始化OLE/COM库环境可以在应用程序的InitInstance函数中初始化,即在InitInstance()中调用:if(!AfxOleInit()){AfxMessageBox("OLE初始化出错!");return FALSE;}3,ADO接口简介ADO库包含了三个基本接口:_ConnectionPtr接口、_CommandPtr接口和_RecordSetPtr接口。
_ConnectionPtr接口返回一个记录集或一个空指针。
通常用它来创建一个数据库连接或执行一条不返回任何结果的SQL语句。
使用_ConnectionPtr接口返回一个记录集不是一个好的使用方法。
对于要返回记录集的操作通常使用_RecordSetPtr来实现。
用_ConnectionPtr操作时要想得到记录条数得遍历所有记录,而_RecordSetPtr则不需要。
_CommandPtr接口返回一个记录集。
它提供了一种简单的方法来执行返回记录集的存储过程和SQL语句。
使用_CommandPtr时,可以利用全局的_ConnectionPtr接口(适用于频繁访问数据库的情况),也可以在_CommandPtr接口里面直接使用连接串。
_RecordsetPtr是一个记录集对象。
与以上两种对象相比,它对记录集提供了更多的控制功能,如记录锁定、游标控制等。
同_CommandPtr一样,它不一定要使用一个已经创建好的数据连接,可以用一个连接字符串代替连接指针赋给_RecordsetPtr的connection成员变量,让它自己创建数据连接。
VC++ ADO连接数据库操作(1)、引入ADO类#import "c:/program files/common files/system/ado/msado15.dll" /no_namespace /rename ("EOF", "adoEOF")(2)、初始化COM在MFC中可以用AfxOleInit();非MFC环境中用:CoInitialize(NULL);CoUnInitialize();(3)#import 包含后就可以用3个智能指针了:_ConnectionPtr、_RecordsetPtr和_CommandPtr 1.连接和关闭数据库(1)连接例子:连接ACCESS数据库AfxOleInit();//初始化HRESULT hr;try{hr = m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象if(SUCCEEDED(hr)){m_pConnection->ConnectionTimeout = 0;hr = m_pConnection->Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb", "", "", adModeUnknown);//m_pConnection->PutDefaultDatabase ((_bstr_t)"DB");//设置默认数据库m_pCommand.CreateInstance(__uuidof(Command));m_pCommand->CommandTimeout = 5;m_pCommand->ActiveConnection = m_pConnection;}}catch(_com_error e)///捕捉异常{CString errormessage;errormessage.Format("连接数据库失败!/r/n错误信息:%s",e.ErrorMessage()); AfxMessageBox(errormessage);///显示错误信息}(2)、关闭//如果数据库连接有效if( m_pConnection->State )m_pConnection->Close();m_pConnection = NULL;(3)、设置连接时间//设置连接时间-----------------------------------pConnection->put_ConnectionTimeout(long(5));2.打开一个结果集(1)打开,首先创建一个_RecordsetPtr实例,然后调用Open()得到一条SQL语句的执行结果_RecordsetPtrm_pRecordset;m_pRecordset.CreateInstance(__uuidof(Recordset));// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,// 因为它有时会经常出现一些意想不到的错误。
delphi adoquery 方法在Delphi中,ADOQuery是一个非常常用的数据访问对象,它提供了许多方法来执行数据库操作。
以下是ADOQuery的一些常用方法:1.Close:关闭ADOQuery,释放资源。
2.Open:打开ADOQuery,执行SQL语句并返回结果集。
3.Execute:执行SQL语句,但不返回结果集。
4.Fetch:从结果集中获取一行数据。
5.First、Next、Prior、Last:分别获取结果集中的第一行、下一行、前一行和最后一行数据。
6.Count:获取结果集中的行数。
7.Active:判断ADOQuery是否处于活动状态。
8.Parameters.ParamByName[‘字段名’].Value:获取或设置参数的值。
这些方法可以让你执行查询、插入、删除和修改等操作。
例如,你可以使用以下代码实现插入操作:delphi复制代码ADOQuery.Close;ADOQuery.SQL.Clear;ADOQuery.SQL.Add('insert into YourTable (Field1, Field2) values(:Field1, :Field2)');ADOQuery.Parameters.ParamByName('Field1').Value := 'Value1';ADOQuery.Parameters.ParamByName('Field2').Value := 'Value2';ADOQuery.ExecSQL;在执行查询操作时,你需要先关闭ADOQuery,然后清空SQL语句,添加你的查询语句,并使用Open方法执行查询。
例如:delphi复制代码ADOQuery.Close;ADOQuery.SQL.Clear;ADOQuery.SQL.Add('select * from YourTable where Field1=:Field1');ADOQuery.Parameters.ParamByName('Field1').Value := 'Value1';ADOQuery.Open;。
ADO一、ADO简介ADO(ActiveX Data Object)是Microsoft数据库应用程序开发的新接口,是建立在OLE DB之上的高层数据库访问技术,请不必为此担心,即使你对OLE DB,COMBo不了解也能轻松对付ADO,因为它非常简单易用,甚至比你以往所接触的ODBC API,DAO,RDO都要容易使用,并不失灵活性。
本文将详细地介绍在VC下如何使用ADO来进行数据库应用程序开发,并出示例代码。
二、基本流程万事看开头难,任何一种技术对于初学者来说最重要的还是“入门”,掌握其要点。
让我们来看看ADO 数据库开发的基本流程吧。
(1)初始化COM库,引用ADO库定义文件。
(2)用Connection对象连接数据库。
(3)利用建立好的连接,通过Connection、Command对象执行SQL命令,或利用Recordset对象取得结果记录集进行查询、处理。
(4)使用完毕后关闭连接释放对象。
准备工作:为了大家都能使本文提供的例子,我们采用Access数据库,您也可以直接在我们提供的示例代码中找到这个test.mdb。
下面我们将详细介绍上述步骤并给出相关代码。
【1】COM库的初始化我们可以使用AfxOleInit()来初始化COM库,这项工作通常在CWinApp::InitInstance()的重载函数中完成,请看如下代码:BOOL CADOTest1App::InitInstance(){AfxOleInit();......【2】用#import指令引入ADO类型库我们在stdafx.h中加入如下语句。
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")这个语句有何作用呢?其最终作用同我们熟悉的#include类型,编译的时候系统会为我们生成msado15.tlh,ado15.tli两个c++头文件来定义ADO库。
怎样用Delphi 简单的连接SQL 数据库入门注:第三步详解如下:Connected 属性:可以设置为True 的时候才代表已经连接成功,这个控件才算基本设置完成。
Name 属性:简单来说就是该控件的名字,为以后在代码中调用它用的。
此例是:Con13ConnectionString 属性:这个属性是设置连接字符串的,连接什么数据库都要用它。
Provider=SQLOLEDB ……这句是连接路径。
14LoginPrompt 属性:这个是设置是否每次连接都提示输入密码什么的,一般设置为False 。
151612在ADO 选项卡中选择放置ADOconnection 控件3点击按钮,出现下图所示。
5再点击按钮,出现下图所示。
467这里选择服务器的名称,一般是本地服务器,通常是输入一个英文的点“.”就可以了。
8这里输入安装SQL 时的用户名和密码。
9点击这里选择需要连接的数据库。
本例选择的是:park1数据库。
101112至此,第三步的工作才算完成,请返回上面的第14步,接着完成剩下的工作。
在ADO 选项卡中选择放置ADOTable控件。
1713TableName 属性:刚才是连接数据库,没有连接表,这个属性就是设置连接的表名。
例如本例是:prak1_TABLE119Connection 属性:设置为刚才的那个控件,这样才能连接到刚才的那个数据库。
如果刚才那个控件的名字为Con1这里就要设置成Con1。
此例是:Con118Active 属性:现在只要把这个Active 属性设置成True 就可以成功的连接该表了。
20至此,数据连接任务已经完成,现在想把他显示出来的话还需要一个DataSource 控件。
最后一步想把数据库中的“部门信息表”表中的内容显示出来的话,最简单的就是添加一个DBGrid控件。
DataSet 属性:设置DataSet 属性才能把数据源显示出来,这里为刚才的ADOTable1控件。
本例是:tbl1Name 属性:设置Name 属性,本例是ds1。
SQL的种ASP连接方法SQL数据库与ASP网页的连接是ASP开发中非常重要的一环,它可以实现前后端数据交互、数据库的增删改查等功能。
下面是SQL的11种ASP连接方法。
1. 使用ADO(ActiveX Data Objects)连接:ADO是Microsoft提供的一种面向对象的数据库访问接口,可以通过其连接数据库。
使用ADO连接数据库可以通过创建连接对象、命令对象和记录集对象实现。
2. 使用ODBC(Open Database Connectivity)连接:ODBC是用于连接数据库的一种通用的API(应用程序接口),使用ODBC连接数据库可以通过建立数据源和数据源连接实现。
3. 使用OLE DB(Object Linking and Embedding Database)连接:OLE DB是Microsoft的一种通用数据库访问接口,可以通过OLE DB连接数据库实现数据的增删改查等操作。
4. 使用OLE DB Provider for SQL Server连接:OLE DB Provider for SQL Server是一种特殊的OLE DB提供程序,专门用于连接SQL Server数据库。
可以使用其连接字符串来连接SQL Server数据库。
5.使用ODBC数据源连接:可以通过配置ODBC数据源(如DSN)来连接数据库。
然后,在ASP代码中使用该数据源进行数据库连接。
6. 使用DSN-less连接:DSN-less连接是指在连接字符串中直接指定数据库驱动程序的路径、数据库服务器的IP地址、数据库名称等信息,以实现数据库的连接。
7.使用连接字符串连接:连接字符串是一种包含数据库连接信息的字符串,通过该字符串可以连接到指定的数据库。
连接字符串中包括了数据库类型、服务器地址、用户名、密码等必要信息。
8. 使用Windows身份验证连接:Windows身份验证是指使用当前Windows登录的用户身份来进行数据库连接。
连接串ADO中_ConnectionPtr的Open函数参数的写法(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 Server};Server=127.0.0.1;DATABASE=vckbase;UI D=sa;PWD=139","","",adModeUnknown);其中Server是SQL服务器的名称,DA TABASE是库的名称VC++下使用ADO操作数据库_ConnectionPtr、_RecordsetPtr和_CommandPtr(1)、引入ADO类#import "c:\program files\common files\system\ado\msado15.dll" \no_namespace \rename ("EOF", "adoEOF")(2)、初始化COM在MFC中可以用AfxOleInit();非MFC环境中用:CoInitialize(NULL);CoUnInitialize();(3)#import 包含后就可以用3个智能指针了_ConnectionPtr、_RecordsetPtr和_CommandPtr1.连接和关闭数据库(1)连接例子:连接Access数据库AfxOleInit();//初始化HRESULT hr;try//hr = m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象hr = m_pConnection.CreateInstance(_uuidof(Connection));///创建Connection实例if(SUCCEEDED(hr)){m_pConnection->ConnectionTimeout =0;hr =m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb", "", "", adModeUnknown);//m_pConnection->PutDefaultDatabase ((_bstr_t)"DB");//设置默认数据库m_pCommand.CreateInstance(__uuidof(Command));m_pCommand->CommandTimeout =5;m_pCommand->ActiveConnection = m_pConnection;}}catch(_com_error e)///捕捉异常{CString errormessage;errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());AfxMessageBox(errormessage);///显示错误信息}(2)、关闭//如果数据库连接有效if( m_pConnection->State )m_pConnection->Close();m_pConnection =NULL;(3)、设置连接时间//设置连接时间-----------------------------------pConnection->put_ConnectionTimeout(long(5));2.打开一个结果集(1)打开,首先创建一个_RecordsetPtr实例,然后调用Open()得到一条SQL语句的执行结果_RecordsetPtrm_pRecordset;m_pRecordset.CreateInstance(__uuidof(Recordset));// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,// 因为它有时会经常出现一些意想不到的错误。
VC用ADO访问数据库全攻略,介绍了VC用ADO来访问数据库的各个对象及各方法,很经典,也很实用,很值得一看。
正文一、ADO概述ADO是Microsoft为最新和最强大的数据访问范例OLE DB 而设计的,是一个便于使用的应用程序层接口。
ADO 使您能够编写应用程序以通过OLE. DB 提供者访问和操作数据库服务器中的数据。
ADO 最主要的优点是易于使用、速度快、内存支出少和磁盘遗迹小。
ADO 在关键的应用方案中使用最少的网络流量,并且在前端和数据源之间使用最少的层数,所有这些都是为了提供轻量、高性能的接口。
之所以称为ADO,是用了一个比较熟悉的暗喻,OLE 自动化接口。
OLE DB是一组”组件对象模型”(COM) 接口,是新的数据库低层接口,它封装了ODBC的功能,并以统一的方式访问存储在不同信息源中的数据。
OLE DB是Microsoft UDA(Universal Data Access)策略的技术基础。
OLE DB 为任何数据源峁┝烁咝阅艿姆梦剩 庑┦ 菰窗 ü叵岛头枪叵凳 菘狻⒌缱佑始 臀募 低场⑽谋竞屯夹巍⒆远ㄒ逡滴穸韵蟮鹊取R簿褪撬担琌LE DB 并不局限于ISAM、Jet 甚至关系数据源,它能够处理任何类型的数据,而不考虑它们的格式和存储方法。
在实际应用中,这种多样性意味着可以访问驻留在Excel 电子数据表、文本文件、电子邮件/目录服务甚至邮件服务器,诸如Microsoft Exchange 中的数据。
但是,OLE DB 应用程序编程接口的目的是为各种应用程序提供最佳的功能,它并不符合简单化的要求。
您需要的API 应该是一座连接应用程序和OLE DB 的桥梁,这就是ActiveX Data Objects (ADO)。
二、在VC中使用ADO(开发步骤好下:)1、引入ADO库文件使用ADO前必须在工程的stdafx.h头文件里用直接引入符号#import引入ADO 库文件,以使编译器能正确编译。
代码如下所示:用#import引入ADO库文件#import "c:\program files\commonfiles\system\ado\msado15.dll"no_namespaces rename("EOF" adoEOF")这行语句声明在工程中使用ADO,但不使用ADO的名字空间,并且为了避免常数冲突,将常数EOF改名为adoEOF。
现在不需添加另外的头文件,就可以使用ADO接口了。
2、初始化OLE/COM库环境必须注意的是,ADO库是一组COM动态库,这意味应用程序在调用ADO前,必须初始化OLE/COM库环境。
在MFC应用程序里,一个比较好的方法是在应用程序主类的InitInstance成员函数里初始化OLE/COM库环境。
BOOL CMyAdoTestApp::InitInstance(){if(!AfxOleInit())//这就是初始化COM库{AfxMessageBox(“OLE初始化出错!”);return FALSE;}……}3、ADO接口简介ADO库包含三个基本接口:_ConnectionPtr接口、_CommandPtr接口和_RecordsetPtr接口。
_ConnectionPtr接口返回一个记录集或一个空指针。
通常使用它来创建一个数据连接或执行一条不返回任何结果的SQL语句,如一个存储过程。
使用_ConnectionPtr接口返回一个记录集不是一个好的使用方法。
对于要返回记录的操作通常用_RecordserPtr来实现。
而用_ConnectionPtr操作时要想得到记录条数得遍历所有记录,而用_RecordserPtr时不需要。
_CommandPtr接口返回一个记录集。
它提供了一种简单的方法来执行返回记录集的存储过程和SQL语句。
在使用_CommandPtr接口时,你可以利用全局_ConnectionPtr接口,也可以在_CommandPtr接口里直接使用连接串。
如果你只执行一次或几次数据访问操作,后者是比较好的选择。
但如果你要频繁访问数据库,并要返回很多记录集,那么,你应该使用全局_ConnectionPtr接口创建一个数据连接,然后使用_CommandPtr接口执行存储过程和SQL语句。
_RecordsetPtr是一个记录集对象。
与以上两种对象相比,它对记录集提供了更多的控制功能,如记录锁定,游标控制等。
同_CommandPtr接口一样,它不一定要使用一个已经创建的数据连接,可以用一个连接串代替连接指针赋给_RecordsetPtr的connection成员变量,让它自己创建数据连接。
如果你要使用多个记录集,最好的方法是同Command对象一样使用已经创建了数据连接的全局_ConnectionPtr接口,然后使用_RecordsetPtr执行存储过程和SQL语句。
4、使用_ConnectionPtr接口_ConnectionPtr主要是一个连接接口,取得与数据库的连接。
它的连接字符串可以是自己直接写,也可以指向一个ODBC DSN。
_ConnectionPtr pConn;if (FAILED(pConn.CreateInstance("ADODB.Connection"))){AfxMessageBox("Create Instance failed!");return;}CString strSRC;strSRC="Driver=SQL Server;Server=";strSRC+="suppersoft";strSRC+=";Database=";strSRC+="mydb";strSRC+=";UID=SA;PWD=";CString strSQL = "Insert into student(no,name,sex,address)values(3,"aaa","male","beijing")";_variant_t varSRC(strSRC);_variant_t varSQL(strSQL);_bstr_t bstrSRC(strSRC);if (FAILED(pConn->Open(bstrSRC,"","",-1))){AfxMessageBox("Can not open Database!");pConn.Release();return;}COleVariant vtOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR); pConn->Execute(_bstr_t(strSQL),&vtOptional,-1);pConn.Release();AfxMessageBox("ok!");5、使用_RecordsetPtr接口(以连接SQL Server为例)_RecordsetPtr pPtr;if (FAILED(pPtr.CreateInstance("ADODB.Recordset"))){AfxMessageBox("Create Instance failed!");return FALSE;}CString strSRC;strSRC="Driver=SQL Server;Server=";strSRC+="210.46.141.145";strSRC+=";Database=";strSRC+="mydb";strSRC+=";UID=sa;PWD=";strSRC+="sa";CString strSQL = "select id,name,gender,address from personal";_variant_t varSRC(strSRC);_variant_t varSQL(strSQL);if(FAILED(pPtr->Open(varSQL,varSRC,adOpenStatic,adLockOptimistic,adCm dText))){AfxMessageBox("Open table failed!");pPtr.Release();return FALSE;}while(!pPtr->GetadoEOF()){_variant_t varNo;_variant_t varName;_variant_t varSex;_variant_t varAddress;varNo = pPtr->GetCollect ("id");varName = pPtr->GetCollect ("name");varSex = pPtr->GetCollect ("gender");varAddress = pPtr->GetCollect ("address");CString strNo =(char *)_bstr_t(varNo);CString strName =(char *)_bstr_t(varName);CString strSex =(char *)_bstr_t(varSex);CString strAddress =(char *)_bstr_t(varAddress);strNo.TrimRight();strName.TrimRight();strSex.TrimRight();strAddress.TrimRight();int nCount = m_list.GetItemCount();int nItem = m_list.InsertItem (nCount,_T(""));m_list.SetItemText (nItem,0,strNo);m_list.SetItemText (nItem,1,strName);m_list.SetItemText (nItem,2,strSex);m_list.SetItemText (nItem,3,strAddress);pPtr->MoveNext();}pPtr->Close();pPtr.Release();6、使用_CommandPtr接口_CommandPtr接口返回一个Recordset对象,并且提供了更多的记录集控制功能,以下代码示例了使用_CommandPtr接口的方法:代码11:使用_CommandPtr接口获取数据_CommandPtr pCommand;_RecordsetPtr pRs;pCommand.CreateInstance(__uuidof(Command));pCommand->ActiveConnection=pConn;pCommand->CommandText="select * from student";pCommand->CommandType=adCmdText;pCommand->Parameters->Refresh();pRs=pCommand->Execute(NULL,NULL,adCmdUnknown);_variant_t varValue = pRs->GetCollect("name");CString strValue=(char*)_bstr_t(varValue);6、关于数据类型转换由于COM对象是跨平台的,它使用了一种通用的方法来处理各种类型的数据,因此Cstring 类和COM对象是不兼容的,我们需要一组API来转换COM对象和C++类型的数据。