S2/JAVA/08-JDBC
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了S2/JAVA/08-JDBC相关的知识,希望对你有一定的参考价值。
JDBC API主要做3件事:与数据库建立连接、发送SQL语句、处理结果。
DriverManager类:依据数据库的不同,管理相应的JDBC驱动。
Connection接口:负责连接数据库并担任传送数据的任务。
Statement接口:由Connection产生,负责执行SQL语句。
ResultSet接口:负责保存和处理Statement执行后所产生的查询结果。
PreparedStatement接口:Statement的子接口,也有Connection产生,同样负责执行SQL语句。与Statement接口相比,具有高安全性、高性能、高可读性和高可维护性的优点。
JDBC访问数据库的步骤。
(1)加载JDBC驱动。
使用Class.forName()方法将给定的JDBC驱动类加载到Java虚拟机中。若系统中不存在给定的类,则会引发异常,异常类型为ClassNotFoundException。代码示例:
Class.forName("JDBC驱动类的名称");
(2)与数据库建立连接
DriverManager类是JDBC的管理层,作用于用户和驱动程序之间。DriverManager类跟踪可用的驱动程序,并在数据库和相应的驱动程序之间建立连接。当调用getConnection()方法时,DriverManager类首先从已加载的驱动程序列表中找到一个可以接收该数据库URL的驱动程序,然后请求该驱动程序使用相关的URL、用户名和密码连接到数据库中,于是就建立了与数据库的连接,创建连接对象并返回引用。代码示例:
Connection con=DriverManager.getConnection(数据连接字符串,数据库用户名,密码);
(3)发送SQL语句,并得到返回结果。
一旦建立连接,就使用该连接创建Statement接口的对象,并将SQL语句传递给他所连接的数据库。如果是查询操作,将返回类型为ResultSet的结果集,它包含执行SQL查询的结果。如果是其他操作,将根据调用方法的不同返回布尔值或操作影响的记录数目。代码示例:
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery("SELECT id,name FROM master");
(4)处理返回结果
主要是针对查询操作的结果集,通过循环取出结果集中每条记录并做出相应处理。处理结果的代码示例:
While(re.next()){
int id=rs.getInt("id");
String name=rs.getString("name");
System.out.println(id+" "+name);
}
两种常用的驱动方式:第一种是JDBC-ODBC桥连方式,适用与个人开发与测试,他通过ODBC与数据库进行连接。第二种是纯Java驱动方式,他直接通数据库进行连接,在生产型开发中,推荐使用纯Java驱动方式。
使用JDBC-ODBC桥连方式连接数据库,JDBC驱动类是“sun.jdbc.odbc.JdbcOdbcDriver”,数据库连接字符串将以“jdbc:odbc”开始,后面跟随数据源名称。因此,假设我们已经配置了一个叫“conn_epet”的ODBC数据源,数据库连接字符串就是“jdbc:odbc:conn_epet”,假定登录数据库系统的用户名为“sa”,口令为“sa”。具体实现代码如示例1所示。
我们使用纯Java驱动方式进行数据库连接,首先需要下载数据库厂商提供的驱动程序jar包,并将jar包引入工程中。。接下来就可以进行编程,与数据库建立连接。此处假定在SQL Server2008中已经建立了名称为“epet”的数据库,数据库用户名为“sa”,密码为“sa”,驱动程序包为sqljdbc2008.jar。
获取Connection对象后就可以进行各种数据库操作了,此时需要使用Connection对象创建Statement对象。Statement对象用于将SQL语句发送到数据库中,或者理解为执行SQL语句。Statement接口中包含很多基本数据库操作方法,以下为执行SQL命令的3个方法。
ResultSet executeQuery(String sql):可以执行SQL查询并获取ResultSet对象。
int executeUpdate(String sql):可以执行插入、删除、更新的操作。返回值是执行该操作所影响的行数。
boolean execute(String sql):可以执行任意SQL语句,若结果为ResultSet对象,则返回true;若其为更新计数或者不存在任何结果,则返回false。
以上是关于S2/JAVA/08-JDBC的主要内容,如果未能解决你的问题,请参考以下文章