关于Java数据库程序设计的一些基本知识(下篇)

来源:互联网 发布:网红美图软件有哪些 编辑:程序博客网 时间:2024/06/05 05:40

前面介绍了这么多,可能会有疑问,这跟Java有毛关系?为了解答这个问题,下面开始介绍JDBC

首先来看百度百科上的JDBC介绍:

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

也就是说,通过JDBCAPIJava程序能够对数据库进行操作(执行SQL语句,获取结果,显示数据等)。一般来说,JDBC主要做三件事:与数据库进行连接发送SQL语句处理SQL的执行结果。下面是一张来自百度的,表示Java程序,JDBC,数据库之间关系的图片

JDBC类型

JDBC无法直接访问数据库,需依赖数据库厂商或第三方提供的JDBC驱动程序。JDBC驱动程序分四类:

1.JDBC-ODBC+ODBC驱动程序。  

  这种驱动程序将JDBC的调用翻译并传递给ODBC ,再由ODBC调用数据库本地驱动程序代码。只要本地机装有相关的ODBC驱动那么采用JDBC-ODBC桥几乎可以访问所有的数据库。但由于JDBC-ODBC先调用ODBC再由ODBC去调用本地数据库接口访问数据库,所以执行效率比较低,对于那些大数据量 存取的应用是不适合的。而且这种方法要求客户端必须安装ODBC驱动,所以对于基于Internet ,Intranet的应用也是不合适的。

2.本地API部分用Java编写的驱动程序。

  它的特点是可将JDBC的调用直接翻译成对特定DBMS(data basic management system),如MySQLSQL ServerOracle等客户端API的调用,然后去访问数据库。但也需要调用本地驱动程序代码,只是用DBMS客户端取代了JDBC-OBDC桥和ODBC,所以比上面那个类型好不到哪里去。

3.JDBC网络协议驱动纯Java驱动程序。   

  Java语言编写,将JDBC的调用翻译成与DBMS无关的网络协议命令,通过网络服务器中的数据库中间件转换成对特定DBMS的命令。这种方式平台无关,Java应用程序与服务器端可完全分离,因此具有很大灵活性,而且因为不需调用本地代码,因此效率较高且升级方便。但因为多了一个中间件,所以效率并不是最好的。

4.本地协议纯JAVA驱动程序。   

  这种驱动直接把JDBC调用直接转换成对应DBMS所使用的网络协议。这种驱动不需要先把JDBC的调用传给ODBC或本地数据库接口或者是中间层服务器,所以它的执行效率是非常高的。它的驱动完全由Java实现,因此实现了平台独立性.。而且它根本不需要在客户端或服务器端装载任何的软件或驱动,这种驱动程序可以动态的被加载。但是对于不同的数据库仍需要下载不同的驱动程序

*以上“本地”指的是客户端   **速度主要取决于经过“中介”的数量

 

如何用JdbcAPI设计程序

JDBC的相关API主要在java.sqljavax.sql包中

使用JDBC访问数据库的基本步骤为:

1、加载驱动程序

2、建立与数据库的连接

3、创建执行方式语句

4、处理返回结果

5、关闭创建的各种对象

1、驱动程序的加载与连接的建立

  常见驱动程序类

数据库

驱动程序包名

驱动类名

Oracle

ojdbc14.jar

oracle.jdbc.driver.OracleDriver

SQL Server

msbase.jar mssqlserver.jar msutil.jar

com.microsoft.jdbc.sqlserver.SQLServerDriver

MySQL

mysql-connector-Java-3.1.11-bin.jar

com.mysql.jdbc.Driver


  一般用Class.forName(JDBCDriverClass);语句显式地去加载(这可能会抛出ClassNotFound异常,需catch一下)。但为使用这些驱动程序,首先需要我们到相应网站下载.jar文件,并将其添加到类路径ClassPath中。

  加载完成后我们就该创立连接了。连接在Java中也是以对象表示的,我们这时要使用DriverManager类创建Connection对象:

Connection conn=DriverManager.getConnection(String url,String user,String password);

  这里url提供标识数据库位置的方式,由三部分组成,冒号隔开。Jdbc:<subprotocol>:<subname>,例如MySqljdbc:mysql://<host>:[<port>]/<database_name>

  创建完成后,conn有创建SQL语句的方法,使用它们就可以完成对数据库的操作了


2SQL语句的执行

通过各种接口,我们可以创建各种不带参数,带参数的SQL语句,也可获取有关数据库本身的信息(元数据)。下面以最简单的,不带参数SQL语句举例

Statement stmt=conn.createStament();String sqlStr=”SELECT * FROM Student”;ResultSet rs=stmt.executeQuery(sqlStr);

注意,若sql语句很长超过一行,要用若干 + 连接成一整条语句,否则如果超出一行将出现错误


3、处理返回的结果

结果集以ResultSet接口的一个对象的形式返回,我们可以通过对记录指针指向的位置用getXXX()读取数据例如:

while(rs.next()){  String no=rs.getString(“sNo”);  String name=rs.getString(“sName”);  Int age=rs.getInt(“sAge”);  System.out.println(no+”-”+name+”-”+age);  }
一些对结果进行处理的常用方法:


3、关闭创建的对象

退出前,需将创建的各个对象按顺序关闭,防止系统资源浪费。

顺序:ResultSet结果集-> Statement -> Connection连接

需注意,任一时间,一个Statement对象只能打开一个ResultSet。若再次使用同一个Statement对象时,会先关掉之前的结果集。因此要想再次对之前的结果及进行处理,就需要事先建两个Statement对象。






0 0
原创粉丝点击