1.ODBC简介
1.1是微软提出的开放式数据库互连(Open-DataBase-Connectivity,即ODBC),它的提出解决了信息系统所存在的不同数据库之间的互联互访,特别是当用户需要从客户机端访问不同的服务器时。
1.2一种数据库的连接方式,包含数据库连接信息,机器名,用户名,密码,及要查看的使用的数据库。
1.3是一组数据的位置,使用ODBC驱动程序访问该位置。也是一种存储的定义。
1.4提供了对SQL的支持,用户可以将SQL语句直接发送给ODBC。
2.ODBC接口规范
2.1应用程序(Application)
应用程序执行处理并调用ODBC函数,其主要任务如下:
连接数据库
提交SQL语句给数据库
检索结果并处理错误
提交或者回滚SQL语句的事务
与数据库断开连接
2.2驱动程序管理器(Driver Manager)
每种数据库引擎都需要向ODBC驱动程序管理器注册他自己的ODBC驱动程序,这种驱动程序对于不同的数据库引擎是不同的。ODBC驱动程序管理器能将与ODBC兼容的SQL请求从应用程序传给驱动程序,随后由驱动程序把对数据库的操作翻译成相应数据库引擎所提供的固有调用,对数据库实现访问操作。
2.3驱动程序
ODBC通过驱动程序来提供数据库独立性。驱动程序是一个用于支持ODBC函数调用的模块,应用程序调用驱动程序所支持的函数来操纵数据库。若想使应用程序操作不同类型的数据库,就要动态连接到不同的驱动程序上。ODBC驱动程序处理ODBC函数调用,将应用程序的SQL请求提交给指定的数据源,接受由数据源返回的结果,传回给应用程序。
2.4数据源
数据源是用户、应用程序要访问的数据文件或数据库,以及访问他们需要的有关信息。它定义了数据库服务器的名称、登录名和密码等选项。
2.5 ODBC数据源的配置
3.ODBC常用接口
3.1连接到数据源
下面的函数用于连接到数据源:
(1)SQLAllocHandle:分配环境、连接、语句或者描述符句柄。
(2)SQLConnect:建立与驱动程序或者数据源的连接。访问数据源的连接句柄包含了包括状态、事务申明和错误信息的所有连接信息。
(3)SQLDriverConnect:与SQLConnect相似,用来连接到驱动程序或者数据源。但它比SQLConnect支持数据源更多的连接信息;
(4)SQLBrowseConnect:支持一种交互方法来检索或者列出连接数据源所需要的属性和属性值。
3.2获取驱动程序和数据源信息
下面的函数用来获取驱动程序和数据源信息:
(1)SQLDataSources:能够被调用多次来获取应用程序使用的所有数据源的名字。
(2)SQLDrivers:返回所有安装过的驱动程序清单,包括对它们的描述以及属性关键字。
(3)SQLGetInfo:返回连接的驱动程序和数据源的元信息。
(4)SQLGetFunctions:返回指定的驱动程序是否支持某个特定函数的信息。
(5)SQLGetTypeInfo:返回指定的数据源支持的数据类型的信息。
3.3设置或者获取驱动程序属性
下面的函数用来设置或者获取驱动程序属性:
(1)SQLSetConnectAttr:设置连接属性值。
(2)SQLGetConnectAttr:返回连接属性值。
(3)SQLSetEnvAttr:设置环境属性值。
(4)SQLGetEnvAttr:返回环境属性值。
(5)SQLSetStmtAttr:设置语句属性值。
(6)SQLGetStmtAttr:返回语句属性值。
3.4设置或者获取描述符字段
下面的函数用来设置或者获取描述符字段:
(1)SQLGetDescField:返回单个描述符字段的值。
(2)SQLGetDescRec:返回当前描述符记录的多个字段的值。
(3)SQLSetDescField:设置单个描述符字段的值。
(4)SQLSetDescRec:设置描述符记录的多个字段。
3.5准备SQL语句
下面的函数用来准备SQL语句:
(1)SQLPrepare:准备要执行的SQL语句。
(2)SQLBindParameter:在SQL语句中分配参数的缓冲区。
(3)SQLGetCursorName:返回与语句句柄相关的游标名称。
(4)SQLSetCursorName:设置与语句句柄相关的游标名称。
(5)SQLSetScrollOptions:设置控制游标行为的选项,在ODBC 3.0 中被
3.6 SQLGetInfo和SQLSetStmtAttr接口替代
提交SQL请求
下面的函数用来提交SQL请求:
(1)SQLExecute:与SQLPrepare共同使用,执行准备好的SQL语句。
(2)SQLExecDirect:执行一条SQL语句。
(3)SQLNativeSql:返回驱动程序对一条SQL语句的翻译,并不执行sql语句。
(4)SQLDescribeParam:返回对SQL语句中指定参数的描述。
(5)SQLNumParams:返回SQL语句中参数的个数。
(6)SQLParamData:与SQLPutData联合使用在运行时给参数赋值。
(7)SQLPutData:在SQL语句运行时给部分或者全部参数赋值。
3.7 检索结果集及其相关信息
下面的函数用来检索结果集及其相关信息:
(1)SQLRowCount:返回INSERT、UPDATE或者DELETE等语句影响的行数。
(2)SQLNumResultCols:返回结果集中列的数目。
(3)SQLDescribeCol:返回结果集中列的描述符记录。
(4)SQLColAttribute:返回结果集中列的属性。
(5)SQLBindCol:为结果集中的列分配缓冲区。
(6)SQLFetch:在结果集中检索下一行元组。
(7)SQLFetchScroll:返回指定的结果行。
(8)SQLGetData:返回结果集中当前行某一列的值。
(9)SQLSetPos:在取到的数据集中设置游标的位置。这个记录集中的数据能够刷新、更新或者删除。
(10)SQLBulkOperations:执行块插入和块书签操作,其中包括根据书签更新、删除或者取数据。
(11)SQLMoreResults:确定是否能够获得更多的结果集,如果能就执行下一个结果集的初始化操作。
(12)SQLGetDiagField:返回一个字段值或者一个诊断数据记录。
(13)SQLGetDiagRec:返回多个字段值或者一个诊断数据记录。
3.8取得数据源系统表的信息
下面的函数用来取得数据源系统表的信息:
(1)SQLColumnPrivileges:返回一个关于指定表的列的列表以及相关的权限信息。
(2)SQLColumns:返回指定表的列信息的列表。
(3)SQLForeignKeys:返回指定表的外键信息的列表。
(4)SQLPrimaryKeys:返回指定表的主键信息的列表。
(5)SQLProcedureColumns:返回指定存储过程的参数信息的列表。
(6)SQLProcedures:返回指定数据源的存储过程信息的列表。
(7)SQLSpecialColumns:返回唯一确定某一行的列的信息,或者当某一事务修改一行的时候自动更新各列的信息。
(8)SQLStatistics:返回一个单表的相关统计信息和索引信息。
(9)SQLTablePrivileges:返回相关各表的名称以及相关的权限信息。
(10)SQLTables:返回指定数据源中表信息。
3.9终止语句执行
下面的函数用来终止语句执行:
(1)SQLFreeStmt:终止语句执行,关闭所有相关的游标,放弃没有提交的结果,选择释放与指定语句句柄相关的资源。
(2)SQLCloseCursor:关闭一个打开的游标,放弃没有提交的结果。
(3)SQLCancel:放弃执行一条SQL语句。
(4)SQLEndTran:提交或者回滚事务。
3.10中断连接
下面的函数处理中断连接的任务:
(1)SQLDisconnect:关闭指定连接。
(2)SQLFreeHandle:释放环境、连接、语句或者描述符句柄。
4.各种数据接口的连接方式
正在上传…重新上传取消
ODBC连接架构
4.1 ADO连接
4.1.1连接access数据库
set conn=Server.CreateObject("ADODB.Connection")
conn.open "Driver={Microsoft Access Driver (*.mdb)};dbq="&Server.Mappath("dbname(路径全名)")
4.1.2连接SQL Server数据库
set conn=server.CreateObject("ADODB.Connection")
sql="Driver={SQL Server};server=(local);uid=sa;pwd=sa;database=dbname"
conn.open(sql)
4.2 ODBC连接
(列举配置SQL Server数据库文件DSN,打开管理工具---数据源(ODBC)---打开系统DSN选项卡---单击添加按钮---从列表中选择SQL Server,单击完成---在名称中输入数据库名称,在你想连接的SQL Server服务器中输入(local)---按向导提示完成)
4.2.1连接access数据库
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DSN=注册名"
4.2.2连接SQL Server数据库
set conn=Server.CreateObject("ADODB.Connection")
conn.connectionstring="DSN=注册名;UID=sa;PWD=sa;"
conn.open
4.3 OLEDB连接数据库
4.3.1连接access数据库
set conn=Server.CreateObject("ADODB.Connection")
conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&server.MapPath("dbname(路径全名)")&";Persist Security Info=False"
set rs=Server.CreateObject("ADODB.Recordset")
4.3.2连接SQL Server数据库
set conn=server.CreateObject("ADODB.Connection")
sql="Provider=SQLOLEDB;data source=(local);initial catalog=dbname;User ID=sa;password=sa;"
conn.open(sql)
5.linux 环境ODBC安装配置
5.1上传odbc源码包
正在上传…重新上传取消
5.2解压缩
[root@localhost unixODBC-2.3.0]# tar zxvf unixODBC-2.3.0.tar.gz
5.3源码安装
[root@localhost unixODBC-2.3.0]# cd unixODBC-2.3.0/
[root@localhost unixODBC-2.3.0]# ./configure;make;makeinstall
5.4查看配置文件
正在上传…重新上传取消
正在上传…重新上传取消
5.5配置实例odbcinst.ini
vi /usr/local/etc/odbcinst.ini
正在上传…重新上传取消
5.6修改ODBC配置文件
正在上传…重新上传取消
5.7验证配置
Su - dmdba
正在上传…重新上传取消
参考:
http://www.cnblogs.com/huzhongzhong/archive/2011/07/12/2104209.html
https://blog.csdn.net/df_xiao/article/details/40511149
http://msdn.microsoft.com/en-us/library/ms713607(v=vs.85).aspx
http://msdn.microsoft.com/zh-cn/library/1dwe8111.aspx
http://www.cnblogs.com/kzloser/archive/2012/11/29/2794815.html