首页 > 代码库 > JSP详细篇——Java Web的数据库操作

JSP详细篇——Java Web的数据库操作

Java Web的数据库操作

JDBC技术

JDBC简介

 

JDBCJava程序曹祖数据库的API,也是Java程序与数据库交互的一门技术。JDBCjava操作数据库的规范,由一组用Java语言编写的类和接口组成,他对数据库的操作提供了基本的方法。使用JDBC操作数据库,需要数据库厂商提供数据库的驱动程序。

 

JDBCJava程序与数据库之前起到了桥梁的作用,有了JDBC就可以方便的与各种数据库进行交互,不必为某一个特定的数据库指定专门的访问程序。

 

JDBC连接数据库的过程

 

JDBC操作数的开发流程:

A.注册数据库驱动

 

连接数据库之前,需要将数据库厂商提供的数据库驱动类注册到JDBC的驱动管理器中,通常情况下,是通过将数据库驱动类加载到JVM来实现的

范例:

Class.forName(“com.mysql.jdbc.Driver”);

 

B.构建数据库连接URL

 

要建立数据库连接,就要构建数据库连接的URL,这个URL是由数据库厂商指定的,不同的数据库,他的URL有所不同,但是都符合一个基本的格式。即:“JDBC协议+IP地址或域名+端口+数据库名称”。如MySQL的数据库连接的URL的字符串为“jdbc:mysql:///localhost:3306/test

 

C.获取Connection对象

 

在注册 数据库驱动及构建数据库URL后,就可以通过驱动管理器获取数据库的连接Connection.Connection对象是JDBC封装的数据库连接对象,只有创建此对象后,才可以对数据库进行相关操作。他的获取方法如下:

DriverManager.getConnection(url,username,password);

Connection对象的获取需要用到DriverManager对象,DriverManagergerConnection()方法通过数据库连接URL、数据库用户名、数据库连接密码创建Connection对象。

范例:

通过JDBC连接MySQL数据库

 

创建程序中的主页index.jsp,在该页面中加载数据库驱动并创建数据库连接。关键代码如下:

<

try{

Class.forName(“com..mysql.jdbc.Driver);//加载数据库驱动,注册到驱动管理器

String url = “jdbc:mysql://localhost:3306/test”;//数据库连接字符串

String username = “root”;//数据库用户名

String password = “111”;//数据库密码

Connection conn = DriverManager.getConnection(url,username,password);//创建Connection连接

if(conn != null){ //判断数据库连接是否为空

out.println(“数据库连接成功”); //输出连接信息

conn.close(); /关闭数据库连接

} else {

out.println(“数据库连接失败”);

}

catch (ClassNotFoundException e){

e.printStackTrace();

} catch(SQLException e){

e.printStackTrace();

}

 

 

JDBC API

Connection接口

 

Connection接口位于java.sql包中,是与特定数据库的连接会话,只有获得特定数据库的连接对象才能访问数据库,操作数据库中的数据表、视图和存储过程等。Connection接口的方法声明及说明如下:

方法声明

说明

void close() throws SQLException

立即释放Connection对象的数据库连接占用的JDBC资源,在操作数据库后,立即调用此方法。

void commit() throws SQLException

提交事务,并释放Connectio对象当前持有的所有数据库锁,当事务被设置为手动提交模式时,需要调用该方法提交事务

Statement createStatement() throws SQLException

创建一个Statement对象将SQL语句发送到数据库,该方法返回Statement对象

boolean getAutoCommit() throws SQLException

用于判断Connecction对象是否被设置为自动提交模式,该方法返回布尔值

DatabaseMetaData getMetaData() throws SQLException

获取Connection对象所连接的数据库的元数据DatabaseMetaData对象,元数据包括关于数据库的表、受支持的SQL语法、存储过程、此连接功能等信息

int getTransactionIsolation() throws SQLException

获取Connection对象的当前事务隔离级别

boolean isClosed() throws SQLException

判断Connection对象是否与数据库断开连接,该方法返回布尔值,需要注意的是,如果Connection对象与数据库断开连接,则不能在通过Connection对象操作数据库

boolean isReadOnly() throws SQLException

判断Connection对象hi否哦是只读模式,该方法返回布尔值

PreparedStatement preparedStatement(String sql) throws SQLException

将参数化的SQL语句预编译并存储在PreparedStatement对象中,并返回所创建的这个PreparedStatement对象

void releaseSavePoint(SavaPoint savepoint) throws SQLException

从当前事务中移除指定的Savepoint和后续的SavePoint对象

void rollback() throws SQLException

回滚事务,针对Savepoint对象之后的更改

void setAutoCommit(boolean autoCommit) throws SQLException

设置Connection对象的提交模式,如果参数autoCommit的值设置为trueConnection对象则为自动那个提交模式;如果参数autoCommit对象的值设置为false,则Connection对象为手动提交模式

void setReadOnly(boolean readOnly) throws SQLException

Connection对象的连接模式设置为只读,该方法用于对数据库进行优化

Savepoint setSavepoint() throows SQLException

在当前事务中创建一个未命名的保留点,并返回这个保留点对象

Savepoint setSavepoint(String name) throws SQLException

在当前事务中创建一个指定名称的保留点,并返回这个保留点对象

void setTransactionIsolation(int level) throws SQLException

设置Connection对象的事务隔离级别

 

DriverManager

 

DriverManager类主要用作用户及驱动程序之间,他是JDBC中的管理层,通过DriverManager类可以管理数据库厂商提供的驱动程序,并新建应用程序及数据库之间的连接。其方法声明及说明如下:

方法声明

说明

public static void deregisterDriver(Driver driver) throws SQLException

DriverManager的管理列表中删除一个驱动程序,参数driver是要删除的驱动对象

public static Connection getConnection(String url) throws SQLException

根据指定数据库连接URL,建立与数据库的连接,参数URL为数据库连接URL

public static Connection getConnection(String url,Properties info) throws SQLException

根据指定数据库连接URL及数据库连接属性信息建立数据库连接Connection。参数url为数据库连接URL,参数info为数据库连接属性

public static Connection getConnection(String url,String user,String password) throws SQLException

根据指定数据库连接URL、数据库用户名及密码创建数据库连接Connecction.

public static Enumeration<Driver> getDrivers()

获取当前DriverManager中已加载的所有驱动程序,他的返回值是Enumeration

public static void registerDriver(Driver driver) throws SQLException

DriverManager注册一个驱动对象,参数driver为要注册的驱动

 

 

Statement接口

在创建了数据库连接之后,就可以通过程序来调用SQL语句对数据库进行操作,在JDBC中,Statement接口封装了这些操作。Statement接口提供了执行语句和获取查询结果的基本方法,其方法声明及说明如下:

方法声明

说明

Void addBatch(String sql) throws SQLException

SQL语句添加到Statement对象的当前命令列表中,该方法用于SQL命令的批处理

Void clearBatch() throws SQLException

清空Statement对象中的命令列表

Void close() throws SQLException

立即释放Statement对象的数据库和JDBC资源,而不是等待该对象自动关闭时发生此操作

Boolean execute(String sql) throws SQLException

执行指定的SQL语句,如果SQL语句返回结果则该方法返回true,否则返回false

Int[] executeBatch() throws SQLException

将一批SQL命令提交给数据库执行,返回更新计数组成的数组

ResultSet executeQuery(String sql) theows SQLException

执行查询类型的SQL语句,该方法返回查询所获取的结果集ResultSet对象

executeUpdate int executeUpdate(String sql) throws SQLException

执行SQL语句中的DML类型(insertupdatedelete)的SQL语句,返回更新所影响的行数

Connection getConnection() throws SQLException

获取生成的Statement对象的Connection对象

Boolean isClosed() throws SQLException

判断Statement对象是否已经关闭,如果被关闭,将不能在调用该Statement对象执行SQL语句,该方法返回布尔值

 

 

 

 

PreparedStatement接口

Statement接口封装了JDBC 执行SQL语句的方法,他可以完成Java程序执行 SQL语句的操作,但是在实际开发中,SQL语句往往需要将程序中的变量做查询条件参数等。使用Statement接口进行操作过于繁琐,而且存在安全方面的缺陷。针对这一问题,JDBC API中封装了Statement的扩展接口PreparedStaement.

PreparedStatement接口继承与Statement接口,他拥有Statement接口中的方法,而且PreparedStatement接口针对带有参数的SQL语句的执行操作进行了扩展。应用于PreparedStatement接口中的SQL语句,可以使用占位符“?”来代替SQL语句中的参数,然后再对其进行赋值。PreparedStatement接口的方法声明及说明如下:

方法声明

说明

void serBinaryStream(int parameterIndex,InputStream x) throws SQLException

将素如流x作为SQL语句中的参数值,parameterIndex为参数位置的索引

void setBoolean(int parameterIndex,boolean x) throws SQLException

将布尔值x作为SQL语句中的参数,parameterInex为参数位置的索引

void setByte(int parameterIndex,byte x) throws SQLException

bytex作为SQL语句中的参数值,parameterIndex为参数位置的索引

void setDate(int parameterIndex,Date x) throws SQLException

java.sql.Date值作为SQL语句中的参数值,parameterIndex为参数位置的索引

void setDouble(int parameterIndex,double x) throws SQLException

double值作为SQL语句中的餐食之,parameterIndex为参数位置的索引

void setFloat(int parameterIndex,float x) throws SQLException

floatx作为SQL语句中的参数值,paramterIndex为参数位置的索引

void setInt(int parameterIndex,int x) throws SQLException

long 值作为SQL语句中的参数值,parameterIndex为参数位置的索引

void setObject(int parameterIndex,Object x) throws SQLException

Object对象x作为SQL语句中的参数值,parameterIndex为参数位置的索引

void setShort(int parameterIndex ,short x) throws SQLException

shortx作为SQL语句中的参数值,parameterIndex为参数位置的索引

void serString(int parameterIndex,String x) throws SQLException

Stringx作为SQL语句中的参数值,parameterIndex为参数位置的索引

void setTimestamp(int parameterIndex,Timestamp x) throws SQLException

Timestampx作为SQL语句中的参数值,parameterIndex为参数位置的索引

 

 

 

ResultSet接口

ResultSet接口位于java.sql包中,封装了数据库查询的结果集。ResultSet对象包含了符合SQL语句的所有行,针对Java中的数据类型提供了一套getXXX()方法,通过这些方法可以获取每一行中的数据。除此之外,ResultSet还提供了光标的功能,通过光标可以自由定位到每一行中的数据。其方法的声明和说明如下:

方法声明

说明

boolean absolute(int row) throws SQLException

将光标移动到ResultSet对象的给定行编号,参数row为行编号

void afterLast() throws SQLException

将光标移动到ResultSet对象的最后一行之后,如果结果集中不包含任何行,则该方法无效

void beforeFirst() throws SQLException

立即释放ResultSet对象的数据库和JDBC资源

void deleteRow() throws SQLException

ResultSet和底层数据库中删除当前行

boolean first() throws SQLException

将光标移动到ResultSet对象的第一行

InputStream getBinaryStream(String columnLable) throws SQLException

byte流的方式获取ResultSet对象当前行中指定的列的值,参数名columnLable为列名称

Date getDate(String columnLable) throws SQLException

java.sql.Date的方式获取ResultSet对象当前行中指定列的值,参数columnLable为列名称

double getDouble(String columnLable) throws SQLException

double 的方式获取ResultSet对象当前行中指定列的值,参数columnLable为列名称

float getFloat(String columnLable) throws SQLException

float方式获取ResultSet对象当前行中指定列的值,参数columnLable为列名称

int getInt(String columnLable) throws SQLException

int方式获取ResultSet对象当前行中指定列的名称,参数columnLable为列名称

String getString(String columnLable) throws SQLException

String 的方式获取ResultSet对象当前行中指定列的值,参数colnmnLable为列名称

boolean isClosed() throws SQLException

判断当前ResultSet对象是否已关闭

boolean last() throws SQLException

将光标移动到ResultSet对象的最后一行

booolean next() throws SQLException

将光标向后移动一行

boolean previous() throws SQLException

将光标向前移动一行

 

 

JSP详细篇——Java Web的数据库操作