JavaWeb 应用访问数据库的方法

来源:互联网 发布:手机淘宝没有投诉卖家 编辑:程序博客网 时间:2024/06/08 08:12

一、通过JDBC API来访问数据库




            Java程序通过JDBC API访问数据库

1、JDBC的实现包括3个部分。

  • JDBC驱动管理器:java.sql.DriverManager类,由SUN公司实现,负责注册特定JDBC驱动器,以及根据特定驱动器建立与数据库的连接。
  • JDBC驱动器API:由SUN公司制定,其中最主要的接口是java.sql.Driver接口
  • JDBC驱动器:由数据库供应商或者其他第三方工具提供商创建,也陈伟JDBC驱动程序。JDBC驱动器实现了JDBC驱动器API,负责与特定的数据库连接,以及处理通信细节,它可以注册到JDBC驱动管理器中。

2、SUN公司制定了两套API。

JDBC API:java应用程序通过它来访问各种数据库。

JDBC驱动器API:当数据库供应商或者其他第三方工具提供商为特定数据库创建JDBC驱动器时,该驱动器必须实现JDBC驱动器API.

3、java.sql包中的接口和类

JDBC API主要位于java.sql包中,关键的接口与类包括以下几种:

Driver接口和DriverManager类:前者表示驱动器,后者表示驱动管理器

Connection接口:表示数据库连接

Statement接口:负责执行SQL语句

PreparedStatement接口:负责执行SQL语句

CallableStatement接口:负责执行SQL存储过程

ResultSet接口:表示SQL查询语句返回的结果集


二、从数据源中获得与数据库的连接

1、数据源简介:

在数据源中事先建立了多个数据库连接,这些数据库连接保存在连接池中。java程序通过JNDI技术获得Servlet容器提供的DataSource对象的引用。

在javax.naming包中提供了Context接口

2、配置数据源

在context.xml文件中定义数据源的<Resource>元素,在web.xml中加入<resource-ref>元素,该元素声明Web应用引用了特定数据源。


三、两个版本的具体区别:

1、构造方法的实现不一样

    构造方法加载MySQL的JDBC Driver:

public BookDB () throws Exception{//加载 MySQL Driver类Class.forName("com.mysql.jdbc.Driver");//注册MySQL Driver类java.sql.DriverManager.registerDriver("com.mysql.jdbc.Driver");//不是必要的步骤}

       构造方法获得JNDI DataSource:

public BookDB () throws Exception{    Context ctx = new InitialContext ();    if(ctx == null)       throws new Exception("No Context");    ds = (DataSource)ctx.lookup("java:comp/env/jdbc/BookDB");}

2、getConnection()方法的实现不一样

    getConnection()方法直接和数据库建立连接,然后返回连接对象

public Connection getConnection() throws Exception { return java.sql.DriverManager.getConnection(dbUrl,dbUser,dbPwd);}

    getConnection()方法从DataSource中获得空闲状态的连接

public Connection getConnection() throws Excepion{  return ds.getConnection();}
3、closeConnection方法的作用不一样

两个BookDB类的closeConnection()方法的代码相同:

public void closeConnection(){ try{  if(con!=null) con.close();    }catch(Exception e){     e.printStackTrace();   } }


在JDBC API中con.close()方法会真正关闭和数据库的连接,而在DataSource中,con.close()方法仅仅是把数据库的连接对象返回到数据库连接池中,使连接对象恢复到空闲状态。

原创粉丝点击