深入数据库通用的连接方式详解
每个数据的访问都用自己的通信协议,包括还有不同的接口调用,参数传递。在同一个程序里要使用不同数据库里的信息,按照正常的情况来说,那就要写不同的数据库连接的方法,就像在程序里写了多个精简版的 数据库 客户端。这样的编程方式肯定会让人不好难受,所以就期望能够有一种统一的访问数据库的方式,大家都用这一种方式去连接数据库,那么将减少很多痛苦。
话说微软是第一个给大家带来曙光的人,推出了ODBC的概念,从此所有的程序都不用自己写数据库连接程序了,从此跨入了解放时代。ODBC是一组基于C语言的API,它能兼容不同的数据库,然后提供统一的访问接口,这样就为大家节省出了YY的时间。
在ODBC推出后多年,有出了一个新概念OLE DB。这个是ODBC的升级版,因为一切都开始面向对象了,所以这个自然就是以对象方式来实现的。而且在性能方面也有了一些提高,自此OLE DB成为微软的新宠。
ODBC、OLE DB都是底层的数据库访问接口,使用起来不是很方便、容易,大家YY的时间又被占用的,为此微软决定再次解放大家、所以就出来了ADO的概念。很显然这是一个对象,就是对OLE DB、ODBC的高层封装,把大家经常要做的数据库操作都给直接提供出来,大家的YY时间再次被解救回来了。
不过在这期间Sun公司也没闲着,为了更大层次的解救JAVA程序猿们的YY时间,就单独写了一套专门用于JAVA的数据库访问接口JDBC,听名字就知道是山寨创意了。换汤不换药,唯一的好处就是java代码里调用会更舒服,自己家养的东西肯定用起来更顺手。
当然sun除了山寨创意外,还保留了对ODBC的调用接口【JDBC-ODBC桥】,以防不时之需;这样万一有一天除了一个新的东西只有ODBC支持,JDBC不支持。这时还不至于太有压力。当然ODBC的支持也是目前最广的,某些非主流的数据库文件的访问接口也都支持,所以还是留一手的好。
这样的话,数据库访问方式就开始明朗了。见下:
这样看来,用途最广、最底层的就是ODBC了。基本所有其它的都会可能调用它,JDBC、OLE DB是一个等级的;一个是sun的,一个是微软的;ADO不是直接访问的程序,只是一个访问快速通道而已。
注:所有的链接方式都需要本机有相应的驱动,而驱动是和具体的数据库是对应的。这样就会有3类驱动类型,每类访问N种数据库都要N个驱动。
相关推荐
-
MySQL连接无法解析HOST主机名的解决方法
#1042 - Can't get hostname for your address 使用IP链接或域名链接都可能遇到这个问题 解决办法: my.ini 或 my.cnf 末尾添加 skip-name-resolve 并重启MySQL服务器 ok!
-
ASP数据库连接方式大全
<% '#######以下是一个类文件,下面的注解是调用类的方法################################################ '# 注意:如果系统不支持建立Scripting.FileSystemObject对象,那么数据库压缩功能将无法使用 '# Access 数据库类 '# CreateDbFile 建立一个Access 数据库文件 '# CompactDatabase 压缩一个Access 数据库文件 '# 建立对象方法: '# Set a
-
数据库连接方式汇总
1.Access数据库的DSN-less连接方法: 复制代码 代码如下: set adocon=Server.Createobject("adodb.connection")adoconn.Open"Driver={Microsoft Access Driver(*.mdb)};DBQ="& _Server.MapPath("数据库所在路径") 2.Access OLE DB连接方法: 复制代码 代码如下: set adocon=S
-
PHP同时连接多个mysql数据库示例代码
实例: 复制代码 代码如下: <?php $conn1 = mysql_connect("127.0.0.1", "root","root","db1"); mysql_select_db("db1", $conn1); $conn2 = mysql_connect("127.0.0.1", "root","root","db2&q
-
jdbc连接sqlserver数据库示例
1.过程: 1>注册驱动器类:Class.forName() 2>连接数据库: 复制代码 代码如下: String url = "jdbc:sqlserver://localhost:1433;DatabaseName=DataBaseName";String uername = "dbuser";String password = "secret";Connection conn = DriverManager.getConnect
-
jtds1.1连接sqlserver2000测试示例
复制代码 代码如下: public class TestSqlserverJtds { public static void main(String[] args) { Connection con=null; try { String driver="net.sourceforge.jtds.jdbc.Driver"; String url="jdbc:jtds:sqlserver://192.168.0.15:1
-
python连接mysql并提交mysql事务示例
复制代码 代码如下: # -*- coding: utf-8 -*-import sysimport MySQLdbreload(sys)sys.setdefaultencoding('utf-8')class DB(object): def __init__(self,host='127.0.0.1',port=3306,user='root',passwd='123',database=''): self.__host=host self.__port=port self.__user
-
python连接mysql调用存储过程示例
复制代码 代码如下: #!/usr/bin/env python# -*- coding: utf8 -*-import MySQLdbimport timeimport os, sys, stringdef CallProc(id,onlinetime):'''调用存储过程,输入参数:编号,在线时间,输出:帐号,密码;使用输出参数方式'''accname=''accpwd=''conn = MySQLdb.connect(host='localhost',user='root',passwd=
-
php中mysql连接和基本操作代码(快速测试使用,简单方便)
偶尔要用到php做一些mysql数据库的操作测试,自己写起来太麻烦,搜索的结果一般都又包含一大堆没用的代码,这里将php mysql的操作做一下总结,希望以后用到的时候不用再感到麻烦了. 复制代码 代码如下: <?php$dbhost='localhost';//数据库服务器名称$dbuser='root';// 连接数据库用户名$dbpass='123456';// 连接数据库密码$dbname='products';// 数据库的名字 // 连接到数据库$connect=mysql_conn
-
深入探讨:PHP使用数据库永久连接方式操作MySQL的是与非
PHP程序员应该都知道连接MySQL数据库可以使用mysql_pconnect(永久连接)函数,使用数据库永久连接可以提高效率,但是实际应用中数据库永久连接往往会导致出现一些问题,通常的表现就是在大访问量的网站上时常发生断断续续的无法连接数据库的情况,出现类似"Too many connections in ..."的错误提示信息,重新启动服务器又正常了,但过不了一会儿又出现同样的故障.对于这些问题的成因,恐怕就不是每个人都能说清楚的了,虽然PHP文档里有一些相关资料,但是解释的并不浅显易懂,这
-
PHP连接MySQL的2种方法小结以及防止乱码
PHP的MySQL配置 报错信息:Class 'mysqli' not found in Answer:1.在conf/php.ini中,在vim用"/php_mysql"搜索到extension=php_mysql.dll,去掉前面的";", 同时在下面增加extension=php_mysqli.dll; 注意后面那个dll多了个i2."/extension_dir"检查路径是否正确; 3.找到ext/目录,把其中的php_mysql.dll
-
sql server 2008数据库连接字符串大全
一..NET Framework Data Provider for SQL Server类型:.NET Framework类库使用:System.Data.SqlClient.SqlConnection厂商:Microsoft 1.标准安全连接 复制代码 代码如下: Data Source = myServerAddress;Initial Catalog = myDataBase;User Id = myUsername;Password = myPassword; 使用服务器名\实例名作为
随机推荐
- 网管专用自动更改IP\机器名\工作组的批处理
- java环境变量path和classpath的配置
- 随机获取oracle数据库中的任意一行数据(rownum)示例介绍
- mysql的分区技术详细介绍
- Android自定义TabLayout效果
- 关于跨站脚本攻击问题
- C#动态生成PictureBox并指定图片的方法
- 如何解决ORA-01843与NLS_DATE_FORMAT问题
- bootstrap基本配置_动力节点Java学院整理
- jQuery中wrapInner()方法用法实例
- Android实现循环平移动画示例
- java中的正则操作方法总结
- C/C++中运算符的优先级、运算符的结合性详解
- Android 4.4.2 横屏应用隐藏状态栏和底部虚拟键的方法
- C语言基础知识点解析(extern,static,typedef,const)
- PHP substr()函数参数解释及用法讲解
- 通过Spring Shell 开发 Java 命令行应用
- layui数据表格实现重载数据表格功能(搜索功能)
- Java 8中字符串拼接新姿势StringJoiner详解
- vue-cli中使用高德地图的方法示例