J2EE规范——JDBC

来源:互联网 发布:java视频资源百度网盘 编辑:程序博客网 时间:2024/05/16 14:06

  JDBC(Java Data Base Connectivity ,Java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC 提供了一种基准,据此 可以构建更高级的工具和接口,事数据库开发人员能够编写数据库应用程序.(百度百科)

  JDBC定义了4种不同的驱动程序,如下:

类型 1: JDBC-ODBC Bridge(基于原有的odbc的数据库连接

  在JDBC出现的初期,JDBC-ODBC桥显然是非常有实用意义的,通过JDBC-ODBC桥,开发人员可以使用JDBC来存取ODBC数据源。不足的是,他需要在客户端安装ODBC驱动程序,换句话说,必须安装Microsoft Windows的某个版本。使用这一类型你需要牺牲JDBC的平台独立性。另外,ODBC驱动程序还需要具有客户端的控制权限。

类型 2: JDBC-native driver bridge(基于本地的,需要在本地安装客户端

  JDBC本地驱动程序桥提供了一种JDBC接口,它建立在本地数据库驱动程序的顶层,而不需要使用ODBC。 JDBC驱动程序将对数据库的API从标准的JDBC调用转换为本地调用。使用此类型需要牺牲JDBC的平台独立性,还要求在客户端安装一些本地代码。

类型 3: JDBC-network bridge(基于NetWork Server(WLS),屏蔽平台,往往先连接到Weblogic 然后再调用2层的方法来连接

  JDBC网络桥驱动程序不再需要客户端数据库驱动程序。它使用网络上的中间服务器来存取数据库。这种应用使得以下技术的实现有了可能,这些技术包括负载均衡、连接缓冲池和数据缓存等。由于第3种类型往往只需要相对更少的下载时间,具有平台独立性,而且不需要在客户端安装并取得控制权,所以很适合于Internet上的应用。

类型 4: Pure Java driver(Java的原生态连接,不需要安装客户端,跨平台

  第4种类型通过使用一个纯Java数据库驱动程序来执行数据库的直接访问。此类型实际上在客户端实现了2层结构。要在N-层结构中应用,一个更好的做法是编写一个EJB,让它包含存取代码并提供一个对客户端具有数据库独立性的服务。

  用一幅图来展现这四种类型:


  使用JDBC直接连接数据库:

<span style="font-size:18px;">try{      //连接的数据库类型      class.forName("com.pointbase.jdbc.jdbcUniversalDriver");            //数据库的实例      Connection con = DriverManager.getConnect("jdbc:pointbase://server:port/MyDataBase");        //建立会话      Statement stmt = con.createStatement();            //相关查询语句和对查询结果的操作      String sql="SELECT * FROM MYTABLE";      ResultsSet res = stmt.executeQuery(sql);      while(res.next()){          String col1 = res.getString("MYCOLUMN1");          int    col2 = res.getInt("MYCOLUMN2");                ……      }        }catch(Exception e){      }</span>
  PreparedStatement和Statement的比较:

  PreparedStatement:数据库会对sql语句进行预编译,下次执行相同的sql语句时,数据库端不会再进行预编译了,而直接用数据库的缓冲区,提高数据访问的效率(但尽量采用使用?号的方式传递参数),如果sql语句只执行一次,以后不再复用。   从安全性上来看,PreparedStatement是通过?来传递参数的,避免了拼sql而出现sql注入的问题,所以安全性较好。在开发中,推荐使用 PreparedStatement。

  对于只执行一次的SQL语句选择Statement是最好的. 相反, 如果SQL语句被多次执行选用PreparedStatement是最好的,PreparedStatement的第一次执行消耗是很高的。它的性能体现在后面的重复执行。


0 0