2012-12-10 11:50 (分类:计算机程序)

技术博客,对抗遗忘……

1.ODBC   Open Database Connectivity    
1.1 简介:
提供了一组对数据库访问的标准API(应用程序编程接口),这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。

ODBC现在看来是一个比较古老的东西,然而,正因为它是一个比较成熟和古老的规范,ODBC在大多数DBMS上都做可以使用,可以说一个像样的DBMS都应该支持ODBC 3.0或以上的版本。 
一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不论是FoxPro、Access还是Oracle数据库,均可用ODBCAPI进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。 
应用系统程序通过标准API进行数据源连接,因此开发过程中不需指定特定的数据库系统,所以数据库系统的开放性从此被建立。

1.2  odbc API
其API共可分为以下九类:
I. 连接数据源(Connecting to a Data Source)
1. SQLAllocEnv.  2. SQLAllocConnect.   3. SQLConnect.  4. SQLPriverConnect.   5. SQLBrowseConnect.
II. 取得驱动程序及数据源的相关讯息
1.SQLDataSource    2.SQLGetInfo.  3SQLGetFunctions.    4.SQLGetTypeInfo.
III. 设定及取得驱动程序的选项
1. SQLSetConnectOption.    2. SQLGetConnectOption.    3. SQLSetStmtOption.     4. SQLGetStmtOption.
IV. 准备SQL指令之需求
1. SQLAllocStmt.  2. SQLPrepare.    3. SQLSetParam.    4. SQLParamOptions.    5. SQLGetCursorName. 6.SQLSetCursorName. 7. SQLSetScrollOptions.
V. 传送及执行需求
1. SQLExecute.   2. SQLExecDirect.    3. SQLNativeSql.    4. SQLDescribeParanl.    5. SQLNumParams. 6.SQLParamData. 7. SQLPutData.
VI. 取得执行结果及有关结果的讯息
1. SQLRowCount.    2. SQLNumResultCols.     3. SQLDescribeCol.    4. SQLColAttributes.   5. SQLBindCol. 6.SQLFetch.   7. SQLExtendedFetch.    8. SQLGetData.   9. SQLSetDos.   10. SQLMoreResults.   11. SQLError.
VII. 取得有关数据源系统回录(System tables or Catalog)的讯息
1. SQLColumnPrivileges.   2. SQLColumns.    3. SQLForeignkeys. 4. SQLPrimaryKeys. 5.SQLProcedureColumns. 6. SQLProcedures. 7. SQLSpecialColumns. 8. SQLStatistics. 9. SQLTablePrivileges. 10. SQLTables.
VIII. 结束 SQL 指令需求
1. SQLFreeStmt. 2. SQLCancel. 3. SQLTransact.
IX. 结束与数据源的连接
1. SQLDisconnect. 2. SQLFreeConnect. 3. SQLFreeEnv.

以上所列之 ODBC API函数,我们发现全都以 SQL 为开头。除以上述分类外,各个函数在其必要性或复杂度上, 更被规定在不同的几个层级中 ODBC 函数的层级为核心层(Core level),第一层(Level 1),和第二层(Level 2)。我们再来看一个很基本的应用程序步骤是如何呢? 下图告诉我们这个答案。

回顾 ODBC 的架构及其执行过程,ODBC 造就了"应用程序独立性(Application Independency)"的特性,使应用程序不需在乎数据源是何种数据库系统或者纯粹是个资料或文本文件,只要相对驱动程序能完成衔接的功能,则应用程序即可达到高度的独立性。

1.3 MFC  封装的odbc类
MFC的 ODBC类对较复杂的ODBC API进行了封装,提供了简化的调用接口。

MFC  ODBC将ODBC API封装在类
CDatabase、主要功能是建立与数据源的连接;
CRecordSet、代表从数据源选择的一组记录(记录集)
CFieldExchange支持记录字段数据交换RFX,即记录集字段数据成员与相应的数据库的表的字段之间的数据交换 
CRecordView  供了一个表单视图与某个记录集直接相连,利用对话框数据交替机制(DDX)在记录集与表单视图的控件之间传输数据
CDBException   代表ODBC类产生的异常。

使用MFCODBC 开发数据库应用程序的一般步骤
使用AppWizard访问数据库
使用类CDatabase连接数据库
使用类CRecordSet打开记录集、获取数据
使用类CRecordSet的函数MoveFirst()MoveLast()MoveNext()MovePrev()IsBOF()IsEOF()进行记录集的遍 历
使用类CRecordSet的函数AddNewUpdate增加记录
使用类CRecordSet的函数EditUpdate修改记录
使用类CRecordSet的函数Delete 删除记录
使用类CDatabase的函数ExecuteSQL直接执行SQL命令
使用类CDatabase的函数BeginTransCommitTransRollback处理事务

1.4 简单的odbc使用方法
建立数据源后,创建包含数据源的程序,在程序中将变量与数据源字段关联,不用编写具体代码,可以查看
数据库数据,

连接数据库的方法---ODBC的更多相关文章

  1. java和.net连接数据库的方法

    .net连接数据库的方法 App.config <connectionStrings> <add name="" connectionString="D ...

  2. PL/SQL TOAD 不安装Oracle客户端连接数据库的方法

    不安装Oracle客户端连接数据库的方法 本机环境: win7 64位中文旗舰版 一.准备工作: 1)到ORACLE官网下载instantclient,下载地址:http://www.oracle.c ...

  3. php程序无法使用localhost连接数据库解决方法(linux)

    php程序无法使用localhost连接数据库解决方法(linux) 出现这种情况是因为PHP无法正确获取mysql.sock 在php.ini文件中指定即可解决问题. 修改如下: 找到 mysql. ...

  4. php连接数据库查询方法(还少一种pdo方法)

    <?php header("content-type:text/html;charset=utf-8"); $conn = mysql_connect("local ...

  5. PHP连接数据库的方法

    mysql可通过两种方式通过PHP和web相连,一种通过php的mysql相关函数,另一种通过php的ODBC相关函数. 相关函数如下: MYSQL函数 mysql_affected_rows: 得到 ...

  6. PHP5中使用PDO连接数据库的方法

    PDO(PHP Data Object) 是PHP 中加入的东西,是PHP 5新加入的一个重大功能,因为在PHP 5以前的php4/php3都是一堆的数据库扩展来跟各个数据库的连接和处理,php_my ...

  7. java几种连接数据库的方法

    package bean; import java.sql.Connection;import java.sql.DriverManager; public class jdbcTest { //不同 ...

  8. Oracle 即时客户点下载以及简单连接数据库的方法

    1. 下载方法 百度 oracle client 第一个即可 2. 下载地址为: https://www.oracle.com/database/technologies/instant-client ...

  9. C#连接数据库的方法

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...

随机推荐

  1. 解决el-tree lazy懒加载时,连续勾选前两个子节点后第二次进入默认选中时,将父节点也勾选的问题

    在用到el-tree的懒加载和默认勾选功能时,若第一次勾选前几个连续节点,第二次进入默认勾选时,由于el-tree子节点尚未完全加载(只加载出来前几个),默认勾选已经开始(已加载出来的子节点被默认勾选 ...

  2. Centos7.6部署k8s v1.16.4高可用集群(主备模式)

    一.部署环境 主机列表: 主机名 Centos版本 ip docker version flannel version Keepalived version 主机配置 备注 master01 7.6. ...

  3. Nginx. 用http访问https跨域

    用http 访问 https域名, 报跨越问题 解决方法: 在nginx相应服务的转发配置下添加: add_header 'Access-Control-Allow-Origin' 'http://i ...

  4. php代码没解析成功

    在Apache中加载PHP模块 1.打开Apache的配置文件httpd.conf(位于Apache2\conf 目录下). 2.查找 “#LoadModule ssl_module modules/ ...

  5. SpringBoot中对SpringMVC的自动配置

    https://docs.spring.io/spring-boot/docs/1.5.10.RELEASE/reference/htmlsingle/#boot-features-developin ...

  6. 从零开始ming的多人联机游戏--游戏客户端(1)六边形地图

    打算做的小游戏是一个多人联机的策略类游戏,类似于<文明>那种 游戏的玩法并不确定,开这个坑主要是为了入门后端开发,顺便熟悉下游戏开发 这篇文章使用unity,实现了六边形单元地图的创建.后 ...

  7. C++ 一篇搞懂多态的实现原理

    虚函数和多态 01 虚函数 在类的定义中,前面有 virtual 关键字的成员函数称为虚函数: virtual 关键字只用在类定义里的函数声明中,写函数体时不用. class Base { virtu ...

  8. python笔记11

    今日内容 函数小高级 lambda 表达式 内置函数 内容回顾 函数基本结构 参数 形参 基本参数:def func(a1,a2):pass 默认值:def func(a1,a2=123):pass ...

  9. shiro 基础使用

    引 言 相关内容 : https://blog.csdn.net/superyayaya/article/details/94408805 在web 中, 不同角色的用户, 具有不同的访问权限, 有的 ...

  10. ElasticSearch快速入门

    知识储备 学习ElasticSearch之前可以先了解一下lucene,这里是我整理的一篇关于lucene的笔记(传送门),对搜索框架有兴趣的还可以了解一下另一款企业级搜索应用服务器---solr(传 ...