深入数据库通用的连接方式详解

每个数据的访问都用自己的通信协议,包括还有不同的接口调用,参数传递。在同一个程序里要使用不同数据库里的信息,按照正常的情况来说,那就要写不同的数据库连接的方法,就像在程序里写了多个精简版的 数据库 客户端。这样的编程方式肯定会让人不好难受,所以就期望能够有一种统一的访问数据库的方式,大家都用这一种方式去连接数据库,那么将减少很多痛苦。

话说微软是第一个给大家带来曙光的人,推出了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个驱动。

时间: 2013-06-02

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

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

php中mysql连接和基本操作代码(快速测试使用,简单方便)

偶尔要用到php做一些mysql数据库的操作测试,自己写起来太麻烦,搜索的结果一般都又包含一大堆没用的代码,这里将php mysql的操作做一下总结,希望以后用到的时候不用再感到麻烦了. 复制代码 代码如下: <?php$dbhost='localhost';//数据库服务器名称$dbuser='root';// 连接数据库用户名$dbpass='123456';// 连接数据库密码$dbname='products';// 数据库的名字 // 连接到数据库$connect=mysql_conn

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

深入探讨:PHP使用数据库永久连接方式操作MySQL的是与非

PHP程序员应该都知道连接MySQL数据库可以使用mysql_pconnect(永久连接)函数,使用数据库永久连接可以提高效率,但是实际应用中数据库永久连接往往会导致出现一些问题,通常的表现就是在大访问量的网站上时常发生断断续续的无法连接数据库的情况,出现类似"Too many connections in ..."的错误提示信息,重新启动服务器又正常了,但过不了一会儿又出现同样的故障.对于这些问题的成因,恐怕就不是每个人都能说清楚的了,虽然PHP文档里有一些相关资料,但是解释的并不浅显易懂,这

MySQL连接无法解析HOST主机名的解决方法

 #1042 - Can't get hostname for your address 使用IP链接或域名链接都可能遇到这个问题 解决办法: my.ini 或 my.cnf 末尾添加 skip-name-resolve 并重启MySQL服务器 ok!

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=

ASP数据库连接方式大全

<%  '#######以下是一个类文件,下面的注解是调用类的方法################################################  '# 注意:如果系统不支持建立Scripting.FileSystemObject对象,那么数据库压缩功能将无法使用  '# Access 数据库类  '# CreateDbFile 建立一个Access 数据库文件  '# CompactDatabase 压缩一个Access 数据库文件  '# 建立对象方法:  '# Set a

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; 使用服务器名\实例名作为

数据库连接方式汇总

 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

MySQL数据库连接异常汇总(值得收藏)

在Centos上部署项目发现一个奇怪的问题,数据库连接一直抛异常.于是花了两个小时搜了各种数据库连接异常导致的原因,最终问题得以解决.同时,把解决过程中搜集到的异常信息汇总一下,当大家遇到类似的问题时,给大家以思路.必须珍藏. 问题现象 先来说说我遇到的问题.项目中遇到的问题很奇怪,在Centos上安装了Mysql数据库,项目使用的是Spring Boot. 项目在本地启动连接服务器数据库正常.本地数据库客户端连接服务器数据库正常.服务器本地连接client连接数据库正常.唯独把项目部署到服务器

使用Webpack提高Vue.js应用的方式汇总(四种)

Webpack是开发Vue.js单页应用程序的重要工具. 通过管理复杂的构建步骤,你可以更轻松地开发工作流程,并优化应用程序的大小和性能. 其中介绍下面四种方式: 单个文件组件 优化Vue构建 浏览器缓存管理 代码分割 1.单个文件组件 Vue的特殊功能之一是使用HTML作为组件模板. 尽管如此,它们还有一个内在的问题:你的HTML标记需要是一个尴尬的JavaScript字符串, 否则你的模板和组件定义将需要在单独的文件中,使其难以使用. Vue有一个优雅的解决方案,称为单文件组件(SFC),其

AngularJS数据源的多种获取方式汇总

AngularJS 简介 AngularJS 是由 Google 发起的一款开源的前端 MVC 脚本框架,既适合做普通 WEB 应用也可以做 SPA(单页面应用,所有的用户操作都在一个页面中完成).与同为 MVC 框架的 Dojo 的定位不同,AngularJS 在功能上更加轻量,而相比于 jQuery,AngularJS 又帮您省去了许多机械的绑定工作.在一些对开发速度要求高,功能模块不需要太丰富的非企业级 WEB 应用上,AngularJS 是一个非常好的选择.AngularJS 最为复杂同

JS设置CSS样式的方式汇总

1. 直接设置style的属性  某些情况用这个设置 !important值无效 如果属性有'-'号,就写成驼峰的形式(如textAlign)  如果想保留 - 号,就中括号的形式  element.style['text-align'] = '100px'; element.style.height = '100px'; 2. 直接设置属性(只能用于某些属性,相关样式会自动识别) element.setAttribute('height', 100); element.setAttribute

Python 常用的安装Module方式汇总

一.方法1: 单文件模块 直接把文件拷贝到 $python_dir/Lib 二.方法2: 多文件模块,带setup.py 下载模块包,进行解压,进入模块文件夹,执行: python setup.py install1 三. 方法3:easy_install 方式 先下载ez_setup.py 运行 python ez_setup1 进行easy_install工具的安装,之后就可以使用easy_install进行安装package了. easy_install packageName easy_

SQL分页查询方式汇总

需求:查询表dbo.Message,每页10条,查询第2页 1:TOP() SELECT TOP(20) * FROM dbo.Message WHERE Code NOT IN (SELECT TOP(10) Code FROM dbo.Message) 2:BETWEEN * AND * , Row_Number() OVER(ORDER BY *) AS rowNum SELECT *,ROW_NUMBER() OVER(ORDER BY Code) AS rowNum INTO #a F

JavaScript实现页面跳转的方式汇总

在动手做网站时,不可避免的会碰到页面跳转的问题,新页面是在当前页面打开呢?还是在新窗口打开呢?是不是需要依据参数进行跳转呢或者要经过用户确认后再跳转呢?等等很多种情况,下面我们来看下常用的一些JS实现页面跳转的方式例子. 按钮式: <INPUT name="pclog" type="button" value="GO" onClick="location.href='http://www.ddhbb.com/'">

JavaScript实现打开链接页面的方式汇总

在页面中的链接除了常规的方式以外,如果使用javascript,还有很多种方式,下面是一些使用javascript,打开链接的几种方式: 1.使用window的open方法打开链接,这里可是在制定页面中打开链接,也可以定制打开页面的尺寸等等. <a href="javascript:window.open('http://www.google.com','_self') "> open a link 1</a><br/> 2.使用document.U

Android实现文字垂直滚动、纵向走马灯效果的实现方式汇总

方法一.使用系统控件ViewFlipper方式: 布局文件: <ViewFlipper android:id="@+id/view_flipper" android:layout_width="300dp" android:layout_height="35dp" android:layout_centerInParent="true" android:autoStart="true" android