数据库连接方式

 

ADO---Active Data Objects,活动数据对象
DAO---Data Access Objects,数据访问对象
RDO---Remote Data Objects,远程数据对象
ODBC---Open Database Connectivity,开放式数据库连接性
DSN---Data Source Name,数据源名
BDE---Borland Database Engine,Borland数据库

JET---Joint EngineTechnology,数据连接性引擎
技术
OLEDB---Objects Link Embed DataBase对象链接嵌入数据库

JDBC---java database connection java数据库连接

ado的效率不是最佳,但是使用极为方便,而且通过压缩传输recrodset然后使用updatebatch功能极大的降低了网络的负载。这是我坚持使用ADO的原因。同时ADO支持将recordset用XML的方式储存、读取(读取需通过Stream对象),对于通过HTTP协议传输recordset极为方便。只需100行左右的代码就可以实现基于HTTP的recordset的远程传输。
RDO和DAO微软已经放弃,我就不多说了。但是必须承认,连接SQL Server的时候RDO的效率超过ADO。
ODBC作为一个标准,地位正在受到OLEDB的挑战。OLEDB的可扩展性和与ADO完美的结合使得我们可以访问任意位置的数据,从SQL Server、DB2、informix标准DBMS到EXCEL,outlook通讯簿,AD等等非传统的数据系统,而且OLEDB的SDK可以从MS站点免费下载,使用VC既可开发(VB的数据模块基于OLE Provider,功能上也类似,但是不能算真正的OLE Provider)。但是作为一个跨平台的标准,由于有IBM的支持,在unix品台商ODBC仍然是最大的赢家。
BDE,JDBC没有用过  

1、ODBC
1992年Microsoft和Sybase、Digital共同制定了ODBC标准接口,以单一的ODBC API 来存取各种不同的数据库。随后ODBC便获得了许多数据库厂商和Third-Party的支持而逐渐成为标准的数据存取技术。
ODBC以当时的业界标准规范X/Open Call-Level Interface(CLI)和ISO/IEC9075-3 Call-Level Interface(SQL/CLI)为涵盖的范围,因而支持了广阔的数据库。
虽然ODBC在初期的版本中执行效率不佳,而且功能有限,因此也为人们所贬低。但是,随着Micr osoft不断地改善ODBC,使ODBC的执行效率不断增加,ODBC驱动程序的功能也日渐齐全。到目前,ODBC已经是一个稳定并且执行效率良好的数据存取引擎。
不过ODBC仅支持关系数据库,以及传统的数据库数据类型,并且只以C/C++语言API 形式提供服务,因而无法符合日渐复杂的数据存取应用,也无法让脚本语言使用。因此Microsoft除了ODBC 之外,也推出了其他的数据存取技术以满足程序员不同的需要。
2. DAO
1993年Microsoft为了让程序员能够存取Access数据库,使用OLE Automation技术封装了Jet Engine 。这些使用Jet Engine 存取Access数据库的OLE Automation Object便称为Data Access Object(DAO)。
DAO能够存取xBase的数据库以及Excel文件,并且能够结合ODBC存取关系数据库。但是DAO毕竟主要的设计目的是存取Access数据库,因此DAO在存取Access数据库时非常有效率,但是在存取其他的数据源时却表现得不怎么好。目前DAO已经慢慢接近维护的状态,因此建议各位尽量不要在新的项目中使用DAO。
3. RDO
由于DAO在结合ODBC存取关系数据库时表现得并不好,因此在1995年Microsoft同样以OLE Automation 技术直接封装ODBC API ,让程序员能够存取关系数据库。这种数据存取技术便称为Remote Data Object(RDO)。
Microsoft之所以推出RDO,是因为ODBC API 是非常复杂的API,许多程序员无法直接使用ODBC API 来开发应用程序,因此Microsoft以简化的RDO对象让程序员能够较为简单存取数据。此外,通过RDO,VB和脚本语言也能够存取各种关系数据库。不过目前RDO也已经逐渐地被放弃了,因此建议各位也不要在新的项目中使用RDO,毕竟RDO只能算是一个过渡性质的数据存取解决方案。
4. OLE-DB
随着数据源日益复杂化,现今的应用程序很可能需要从不同的数据源取得数据,加以处理,再把处理过的数据输出到另外一个数据源中。更麻烦的是这些数据源可能不是传统的关系数据库,而可能是Excel文件,Email或Internet/Intranet上的电子签名信息。Microsoft为了让应用程序能够以统一的方式存取各种不同的数据源,在1997年提出了Universal Data Access(UDA)架构。UDA以COM技术为核心,协助程序员存取企业中各类不同的数据源。
UDA以OLE-DB(属于操作系统层次的软件)做为技术的骨架。OLE-DB定义了统一的COM接口做为存取各类异质数据源的标准,并且封装在一组COM对象之中。藉由OLE-DB,程序员就可以使用一致的方式来存取各种数据。
5. ADO
虽然OLE-DB允许程序员存取各类数据,是一个非常良好的架构,但是由于OLE-DB太底层化,而且在使用上非常复杂,需要程序员拥有高超的技巧,因此只有少数的程序员才有办法使用OLE-DB。这让OLE-DB无法广为流行。为了解决这个问题,并且让VB和脚本语言也能够藉由OLE-DB存取各种数据源,Microsoft同样以COM技术封装OLE-DB为ADO对象,简化了程序员数据存取的工作。由于
ADO成功地封装了OLE-DB大部分的功能,并且大量简化了数据存取工作,因此ADO也逐渐被愈来愈多的程序员所接受。
6. ADO 的架构
ADO主要是让应用程序或Web 应用程序存取各种不同的数据源。ADO封装了OLE-DB复杂的接口,以极为简单的COM接口存取数据。ADO能够藉由OLE-DB存取传统的关系数据库,或Flat-File类型的数据库;也可以存取非传统的数据,例如文字、Email、声音、图形、影像等。更可以通过OLE-DB,藉由Connector来存取大型的数据源,例如CICS等。但是不管应用程序要存取哪一种数据源,应用程序都只需要使用ADO,而不需要使用各种不同的复杂API来存取不同的数据,这样就可以大大简化应用程序员的工作。  

7.Java语言具有安全、强健、易于理解和使用的特点.JDBC是用于执行SQL语句的Java应用程序设计接口(API).其主要由一组用Java编写的类和接口,以达到更加容易地连接到数据库的目的.JDBC的引入无疑扩展了Java的功能,并将对Java数据库访问技术进行研究.

  
1.DAO 数据访问对象(DAO)方式是允许程序员操纵Microsoft Jet数据库引擎的第一个面向对象的接口。Jet数据库引擎是一种用来访问MicrosoftAccess表和其它数据源的记录和字段的技术。对于单一系统的数据库应用程序来说,DAO依然很受欢迎并且非常有效;在中等规模工作组的网络中,DAO也有少量的应用。
2.RDO 远程数据对象(RDO)方式是提供给开放数据库互连(ODBC)数据源的面向对象的接口。RDO是开发Microsoft SQL Server、Oracle、和其它大型关系数据库应用程序的绝大多数数据库开发者使用的对象模型。
3.ADO ActiveX数据对象(ADO)方式是DAO和RDO方式的继承者,它也有一个类似的对象模式。在ADO方式中,可编程对象展示了你的计算机上所有可获取的本地和远程数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DBConnectionManager.java //连接数据库用的 import java.sql.*; public class DBConnectionManager { private String driverName="com.microsoft.jdbc.sqlserver.SQLServerDriver"; private String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=demo"; private String user="sa"; private String password=""; public String getDriverName() { return driverName; } public void setDriverName(String driverName) { this.driverName = driverName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getUser() { return user; } public void setUser(String user) { this.user = user; } public Connection getConnection(){ try{ Class.forName(driverName); return DriverManager.getConnection(url, user, password); }catch(Exception e){ e.printStackTrace(); return null; } } } DBSQLManager.java //操作数据库用的 import java.sql.*; public class DBSQLManager { protected Connection con=null;//Connection对象 protected Statement stmt=null;//Statement对象 protected ResultSet rs=null;//记录结果集 protected String sql=""; //SQL语句 public DBSQLManager(){ try { DBConnectionManager dcm=new DBConnectionManager(); con=dcm.getConnection(); //con.setAutoCommit(false);//添加事物,既是否自动提交 stmt=con.createStatement(); } catch (SQLException e) { e.printStackTrace(); } } public Statement getStmt(){ return stmt; } public Connection getCon(){ return con; } public ResultSet getRs(){ return rs; } public void setSql(String sql){ this.sql=sql; } public String getSql(){ return sql; } //查找 public void execueQuery(){ try { rs=stmt.executeQuery(sql); } catch (SQLException e) { e.printStackTrace(); } } //更新 public void executeUpdate(){ try { stmt.executeUpdate(sql); } catch (SQLException e) { e.printStackTrace(); } } //关闭 public void close(){ if(rs!=null){ try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } rs=null; } if(stmt!=null){ try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } stmt=null; } try { con.close(); } catch (SQLException e) { e.printStackTrace(); } con=null; } } SqlOperate.java //用来调用数据库操作语句 import java.sql.ResultSet; import java.sql.SQLException; public class SqlOperate { //插入,修改,删除 public void insOrModOrDel(String sql){ DBSQLManager dbsm=new DBSQLManager(); dbsm.getStmt(); dbsm.setSql(sql); dbsm.executeUpdate(); dbsm.close(); } //显示 public void display(String sql){ DBSQLManager dbsm=new DBSQLManager(); dbsm.getStmt(); dbsm.setSql(sql); dbsm.execueQuery(); ResultSet rs=dbsm.getRs(); try { while(rs!=null&&rs.next()){ System.out.print(rs.getObject(1)+"\t"); System.out.print(rs.getObject(2)+"\t"); System.out.print(rs.getObject(3)+"\t"); System.out.println(rs.getObject(4)); } dbsm.close(); } catch (SQLException e) { e.printStackTrace(); } } } SqlMain.java //数据库的测试主函数 public class SqlMain { public static void main(String[] args){ SqlOperate sqlOpt=new SqlOperate(); // sqlOpt.insOrModOrDel("insert into user1 values('qianhaifei',999999,'qianhaifei@163.com')");//插入 // sqlOpt.insOrModOrDel("update user1 set username='weixiangyang' where id=4");//修改 // sqlOpt.insOrModOrDel("delete from user1 where username='weixy2000'");//删除 sqlOpt.display("select *from user1");//显示 } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值