




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、百度文库好好学习.天天向上在VC+中用ODBC访问SQL Server数据库ODBC (Open Database Connectivity,开放数据库连接)是|!| Microsoft 定义 的一种数据库访问标准,它提供了一种标准的数据库访问方法以访问不同数据 库提供商的数据库,其本质上是一组数据库访问API.虽然数据库访问有多种方 法,但ODBC以其编程相对简单,在实际编程中被广泛使用。V中提供了一组封装了 ODBC API的MFC ODBC类,以减少程序代码编写 量。在V中使用MFC ODBC类访问数据库时,一般都是先配置或选择已有的数据 源,再构造CDatabase类对象,打开数据源,
2、用该数据库类对象和SQL (结构化 查询语言)可以对库进行访问,再构造CRecordset类或其继承类对象,用数据 集类对象和SQL可以实现对库中的表的操作。在VC+中用MFC ODBC类操作SQL Server数据库基本上也是这个思路。1.配置数据源在程序中根据用户选择动态配置数据源而不调用ODBC数据源管理器, 对于应用程序开发有时是十分必要的。毕竟ODBC数据源管理器对于对数据库不 熟悉的用户显的复朵了,且ODBC数据源管理器的界面风格有可能与整个应用程 序的界面风格不一致,对于严谨的应用程序开发者来说,这些都是不能容忍的。配置SQL Server数据源时,必须有SQL Server名和
3、中的LI标数据库名 (否则打开该数据源时,就会弹出配置数据源对话框或失败)。这与配置Access 等数据库的数据源时指定数据库文件的路径不同。可以通过ODBC API函数SQLBrowseConnect得到本地所有的SQL Server 服务器、服务器中的库、语言信息等。其使用方法如下所示: 得到服务器名SQLBrowseConnect (hdbc, "DRIVER二SQL Server: S SQL.NTS, BrowseResult, sizeof (BrowseResult) ,&BrowseResultLen);其中hdbc是用SQLAllocHandle函数得到的连
4、结句柄,第二个参数是指 定连结属性的输入字符串,笫三个参数是输入字符串的长度,第四个参数是输 岀字符串的指针,我们要得到的信息就存于这个字符串中,笫五个参数指定输 出字符串的长度,笫六个参数是实际返回字符串的长度。BrowseResult所指向 的函数返回的字符串中含有形如"SERVER: Server=Server_namel, Server_name2, ” 的字符串,其中 Server_nameK Server_name2 就是 SQL Server服务器名。 得到库名当用户选定一个服务器之后,可以进一步利用SQLBrowseConnect函数 得到服务器中存在的库或语言信息(
5、如果需要的话)。SQLBrowseConnect (hdbc, "SERVER二Server_ndmel; UID=sa; PWD二515378; ", SQL_NTS, BrowseResult, sizeof (BrowseResu It), & Brows eResu It Len);其中UID和PWD是访问该服务器的用户名和密码。这次BrowseResult 所指向的函数返回的字符串中含有形如DATABASE: Databasemaster, model, 和 LANGUAGE: LanguageArabic, Braz订ian, English, 的字符串
6、,其 中master、model为服务器中的数据库名。利用这些得到信息就可以配置SQL Server数据源了:SQLConfigDataSource (NULL, ODBC_ADD_DSN, "SQL Server","DSN二myDSN'O SERVER二xhm'ODATABASE二pubs00")-3百度文阵-好好学习.天天向上作者有幸在网上找到Santosh Rao编写的CSQLI nf oEnumer at or类,该 类有 EnumerateSQLServers> EnumerateDatabase、EnumerateDa
7、tabaseLanguage 三个成员函数,其封装了 SQLBrowseConnect函数并进行相应的字符处理,大大 简化了 SQLBrowseConnect函数的使用。2.与数据源建立连接如果使用ODBC API函数进行连结,函数SQLConnect、SQLDriverConnect 和SQLBrowseConnect都可以实现。其中SQLConnect函数用于给定所有参数直 接建立与数据源的连接;SQLDriverConnect用于给定了部分连接参数,并弹出 数据源浏览窗口与用户交互,获得足够的参数后建立与数据源的连接;而 SQLBrowseConnect是通过迭代获取连结参数再进行连接,
8、其使用如前所述。MFC为连接数据源提供了一个数据库类CDatabase,通过它我们可以非 常方便地与数据源建立连结:在VC+中可以单独利用ODBC API获取数据库的结构信息,但方法非常 复杂,各种参数也不易理解,且返回的结果不易获取o MFC中也没有为应用程序 开发者得到数据库结构信息而提供单独的类。但是我们还是可以通过一些已有 的方法方便地获得数据库的结构信息。得到数据库中的表利用ODBC API函数SQLTables可以得到数据库中的表信息,但使用不 易。在MSDN的sample中有一个catalog例程,它示范了如果得到一个数据 库的表信息和表中的字段信息,该程序中有两个非常实用的类:
9、Ctables和 Ccolumns.其中CTables继承CRecordset类,通过非常巧妙的方法封装了 SQLTables函数,并将结果集存于CRecordset类,方便获取。在程序中我们可以这样应用:“);strTableRef +=+ _T("");(strTableRef);0;0;在CTables对象Open方法第四个能数指定“TABLE”是指返回库中的 表,当该参数为“SYSTEM TABLE”时返回系统表,当为NULL时,返回所有表。得到表中字段结构得到表中字段结构有三种具体实现方式:直接利用ODBC API函数SQLColumn:其实现也同样复杂。 利用询
10、面提到的封装了 SQLColumns函数的CColumns类;其使用方法 与CTables类似,其成员变量m_strColumnName即为字段名 利用CRecordset类的成员函数。MFC在CRecordset类中提供了获取 表结构信息方法,使用非常方便。(但很奇怪为什么CDatabase类没有获取库 结构信息的类方法?)我们以利用CRecodrset为例简单说明怎样得到表结构。假设现在要得 到用户在CComboBox对象中所选表的所有字段名,并将它埴入一个CListCtrl 对象(其View属性被设为Report)的列名中去:/m_strTab 1 eOwner 和上同,为 CCombo
11、Box 对象/m_listData 为 ClistCtrl 对象CRecordset rsCODBCFieldlnfo info;CString strSQL;0, strSQL);strSQL 二 _T("SELECT * FROM “) + strSQL;(Open(CRecordset:snapshot, strSQL,CRecordset::readonly);int nColumns =();for (int num = 0; nNum < nColumns; num+)-6百度文库好好学习.天天向上prs->GetODBCFieldInfo(nNum, info);(nNum, , LVCFMT_LEFT, 80)另外,我们可以利用CRecordSet: : GetFiel
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 制定可持续发展计划的实施方案
- 积极心态引领职场新起点计划
- 仓库人员培训的经验分享计划
- 推动科研成果转化的工作计划
- 提升财务投研能力的途径与方法计划
- 第4课时 相遇问题的练习(教案)2024-2025学年数学 四年级上册 青岛版
- 拍摄景地使用许可合同(2025年版)
- 创意写作与艺术的结合计划
- 四年级下册数学教案-第2单元 认识多位数-苏教版
- 2025年财产保险服务项目建议书
- 台湾大学公开课《逻辑讲义》全集
- 曹刿论战复习公开课课件
- 2025年春国开学习网《形势与政策》专题测验1-5答案
- 2025年皖西卫生职业学院单招职业适应性测试题库参考答案
- (2025春新版本)人教版七年级生物下册全册教案
- CNAS-CL01:2018 检测和校准实验室能力认可准则
- 2025年陕西省西安交大附中中考数学一模试卷
- 《认知行为疗法》课件
- B5G-6G,信道,卫星SDR 解决方案
- 2025年湖南化工职业技术学院单招职业倾向性测试题库完美版
- 2025年浙江宁波市新农村数字电影院线有限公司招聘笔试参考题库附带答案详解
评论
0/150
提交评论