欢迎来到得力文库 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
得力文库 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    ADO数据库连接方式.doc

    • 资源ID:60912026       资源大小:29KB        全文页数:7页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    ADO数据库连接方式.doc

    我们知道,在VB下进行基于ADO的编程相对比较简单,只要通过reference加载了适当的类型库后,就可以正常地调用ADO对象。但是对于VC下的基于ADO的数据库开发就稍微复杂一些。VC中实现对ADO操作通常有三种方法: ?#import方法; ?利用MFC OLE的ClassWizard; ?通过Windows API中COM相关的函数。 在这三种方法中,#import是最方便的方法,它允许产生一个类似VB的类结构,使程序开发变得很方便。下面分别介绍这三种方法。 1#import方法 在#import方法中,需要提供所要包含的类型库的路径和名称,VC能够自动产生一个对GUIDs的定义,以及自动生成对ADO对象的封装。对任何引用的类型库,VC会在编译的时候自动生成两个文件: ?头文件(.tlh):包含了所列举的类型和对类型库中对象的定义; ?实现文件(.tli):对类型库对象模型中的方法产生封装。 例如,在stdafx.h文件中增加对msado15.dd的 #import之后,VC会产生msado15.tlh和msado15.tli两个文件。 #import能够使用一个新的类_com_ptr_t,它也被称为智能指针。智能指针能够自动执行QuyerInterface、AddRef和Release函数。 下面的代码演示了如何使用#import在应用中实现对ADO的操作: #import “c:program filescommon filessystemadomsado15.dll” no_namespace rename ( “EOF”, “adoEOF” ) 重命名EOF是必要的,因为典型的VC应用都已经定义了EOF作为常数1。 通常来说,操作一个自动化对象需要定义和初始化一个用来操作的变量。可以通过使用智能指针 (_com_ptr_t)的构造函数传递一个有效的CLSID或者是PROGID,也可以通过_com_ptr_t:CreateInstance()方法来定义对象。具体代码如下所示: _ConnectionPtr Conn1( _uuidof( Connection ) ); 也可以采用下面的代码实现同样的功能: _ConnectionPtr Conn1 = NULL; /定义对象 HRESULT hr = S_OK; /创建实例 hr =Conn1.CreateInstance( _uuidof( Connection ) ); 推荐采用第二种方式,因为用第一种方式不能返回一个失败的HRESULT,所以也就不能判断ADO连接对象是成功还是失败,以及失败的原因。注意这里的_uuidof( Connection)中的Connection是在.tlh文件中定义的。通过把它传递给方法CreateInstance,就可以创建一个有效的 ADOConnection对象。 需要注意的是#import的no_namespace属性,它告诉编译器该类在不在一个单独的名字空间中。使用no_namespace意味着不需要在初始化变量时引用名字空间。当然如果在应用中需要导入多个类型库时,最好不要使用 no_namespace,以免引起名字冲突。 下面是一个简单的采用了#import方法的基于ADO应用的示例代码: #include #import rename(“EOF”, “adoEOF”) void main() HRESULT hr = S_OK; /因为没有在#import中指定no_namespace,所以必须采用ADODB:这样的形式来定义变量类型 ADODB:_RecordsetPtr Rs1 = NULL; /通过ODBC建立ADO连接 _bstr_t Connect( “DSN=AdoDemo;UID=sa;PWD=;” ); _bstr_t Source ( “SELECT * FROM Authors” ); CoInitialize(); /初始化Rs1对象 hr = Rs1.CreateInstance( _uuidof( ADODB:Recordset ) ); /省略对返回值hr的判断 Rs1>Open( Source, Aonnect, ADODB:adOpenForwardOnly, ADODB:adLockReadOnly, 1 ); /此处可以添加对记录集Rs1进行操作的代码 Rs1>Close(); Rs1 = NULL; :MessageBox( NULL,“Success!”,“”,MB_OK ); CoUninitialize(); 编辑本段用MFC OLE创建ADO应用MFC OLE同样能够封装(wrapper)一个类型库,但是与#import不同,它不能从类型库中产生枚举类型。MFC类CString和 COleVariant隐藏了BSTRS和Variants的细节。由MFC OLE产生的类都继承了类ColeDispatchDriver,由ADO产生的失败的HRESULTS被封装在类 ColeDispatchException中。 用MFC OLE ClassWizard创建ADO应用的步骤如下: ?从Tools菜单中,选择Options选项中的Directories tab条目,在Show Directories中的Library Files中增加路径C:program filescommon filessystemado,设置包含ADO类型库的路径。 ?从View菜单中,激活ClassWizard,点击Add Class按钮并选择“From A Type Library.”选项,然后在Type Library dialog box对话框中,从C:program filescommon filessystemado中选择文件msado15.dll,在Confirm Classes对话框中,选择所有列出的类并按OK按钮退出ClassWizard。这样,ClassWizard便生成了两个文件msado15.h和 msado15.cpp。 下面是实现ADO应用的示例代码: /初始化COM对象 AfxOleInit(); . /定义数据集对象 _Recordset Rs1; COleException e; COleVariant Connect( “DSN=AdoDemo;UID=sa;PWD=;” ); COleVariant Source ( “SELECT * FROM Authors” ); /创建数据集对象 Rs1.CreateDispatch(“ADODB.Recordset.2.0”,&e ); Rs1.Open( (VARIANT) Source, (VARIANT) Connect, 0, 1, 1 ); /此处可以添加对结果集Rs1进行处理的代码 Rs1.Close(); Rs1.ReleaseDispatch(); AfxMessageBox(“Success!”); 编辑本段用COM API创建ADO工程#import和MFC OLE都围绕着一个给定的自动化对象产生了一个封装类,它们分别继承自_com_ptr_t和ColeDispatchDriver。其实也可以通过使用 Windows API函数直接初始化ADO对象。为了直接使用ADO和COM对象,需要添加两个头文件adoid.h和adoint.h,这两个头文件定义了 CLSIDs、接口定义和操作ADO类型库所需要的枚举类型。此外,还需要增加头文件INITGUID.H。 为了能够编译用COM API创建的ADO工程文件,还需要在机器中安装OLE DB SDK或者是MSDASDK工具。下面是利用API创建ADO的简单的示例代码: #include #include #include “adoid.h” / ADO的GUID's #include “adoint.h” / ADO的类、枚举等等 void main() HRESULT hr = S_OK; / ADORecordset 是在adoint.h中定义的 ADORecordset*Rs1 = NULL; VARIANT Source; VARIANT Connect; VariantInit( &Source ); VariantInit( &Connect ); Source.vt = VT_BSTR; Source.bstrVal = :SysAllocString( L“SELECT * FROM Authors”); Connect.vt = VT_BSTR; Connect.bstrVal = :SysAllocString( L“DSN=AdoDemo;UID=sa;PWD=;” ); hr = CoCreateInstance( CLSID_CADORecordset, NULL, CLSCTX_INPROC_SERVER, IID_IADORecordset, (LPVOID *) &Rs1 ); if( SUCCEEDED( hr ) ) hr = Rs1>Open (Source, Connect, adOpenForwardOnly, adLockReadOnly, 1 ); /对记录集Rs1进行处理 if( SUCCEEDED( hr ) ) hr = Rs1>Close(); if( SUCCEEDED( hr ) ) Rs1>Release(); Rs1 = NULL; if( SUCCEEDED( hr ) ) :MessageBox( NULL, “Success!”, “”, MB_OK ); C+ Extensions 如果用C+进行ADO应用程序开发,应该使用ADO C+ Extensions。我们知道,用VB或者VBScript来操作ADO是非常方便的,但是如果使用C+或者是Java,就必须要处理类似 Variants这样的数据结构以实现和C+数据结构的转换,而这种处理无疑是所有C+开发人员都很头疼的事情。但如果使用C+ Extensions的话,ADO就不需要从数据提供者处得到列信息,而是在设计时刻使用开发人员提供的列信息。以下是一个简单的示例: /创建和具体记录相对应的类 class CAuthor : public CADORecordBinding BEGIN_ADO_BINDING(CCustomRs1) ADO_VARIABLE_LENGTH_ENTRY4(1, adVarChar, m_szau_id, sizeof(m_szau_id), FALSE) ADO_VARIABLE_LENGTH_ENTRY4(2, adVarChar,m_szau_fname,sizeof(m_szau_fname), FALSE) ADO_VARIABLE_LENGTH_ENTRY4(3, adVarChar,m_szau_lname,sizeof(m_szau_lname), FALSE) END_ADO_BINDING() protected: char m_szau_id12; char m_szau_fname21; char m_szau_lname41; ; void FetchAuthorData() CAuthor author; /记录集对象 _RecordsetPtr pRs; IADORecordBinding *piAdoRecordBinding; /获取COM对象接口指针 pRs.CreateInstance(_uuidof(Recordset); /得到需要的记录集 pRs>Open(“select au_id,au_fname,au_lname from Employees”,“Provider=SQLOLEDB;Data Source=sureshk1;Database=pubs;User Id=sa;Password=;”, adOpenForwardOnly, adLockReadOnly, adCmdText); /查询接口IADORecordBinding pRs>QueryInterface(_uuidof(IADORecordBinding),(LPVOID*)&piAdoRecordBinding); /绑定对象 piAdoRecordBinding>BindToRecordset(&author); /得到记录中的相关内容 while (VARIANT_FALSE = pRs>EOF) printf(“%s %s %s”, author.m_szau_id, author.m_szau_fname, author.m_szau_lname); pRs>MoveNext(); /释放对象 编辑本段利用ADO ACCESS数据库ACCESS是一个关系型桌面数据库管理系统,它可以用来建立中小型号的数据库应用系统,使用非常广泛.下面介绍如何使用ADO连接ACCESS数据库.在连接数据库时,需要使用Connection对象的Open方法打开与数据源的连接. 语法:Connectoin.open Connectionstring,userID,password,openoptions Open方法的参数表说明如下 Open方法参数说明 ConnectionString (可选)字符串,包含连接信息,参照(ConnectionSting)属性可获得有效调协的详细信息 UserID (可选)字符串,包含建立连接时所使用的用户名称 Password (可选)字符串,包含建立连接时所用的密码 openoptions (可选)ConnectionEnum值.如果调协为adConnectoAsync,则异步打开连接,当连接可用时将产生ConnectComplete事件 ADO(ActiveX Data Objects)是一种操作 Microsoft 所支持的数据库的新技术。在 ASP 中,ADO可以看作是一个服务器组件(Server Component),更简单点说,是一系列的对象,应用这些功能强大的对象,即可轻松完成对数据库复杂的操作。本文中个性化页面的实现便大量地用到了 ADO 技术。具体的操作步骤可以归纳为以下几步: (1) 创建数据库源名(DSN) (2) 创建数据库链接(Connection) (3) 创建数据对象 (4) 操作数据库 (5) 关闭数据对象和链接

    注意事项

    本文(ADO数据库连接方式.doc)为本站会员(飞****2)主动上传,得力文库 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知得力文库 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

    © 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

    黑龙江省互联网违法和不良信息举报
    举报电话:0468-3380021 邮箱:hgswwxb@163.com  

    收起
    展开