JDBC操作数据库的步骤

JDBC操作数据库的步骤

1.加载JDBC驱动程序
在连接数据库前,首先要加载要连接数据库的驱动到Java虚拟机,通过java.lang.Class类的静态方法forName(String className)实现。例如,通过构造方法加载SQL Server2000:

JDBC操作数据库的步骤_第1张图片

加载JDBC驱动程序后,会将加载的驱动类注册给DriverManager类,如果加载失败,将抛出ClassNotFoundException异常,即未找到
2.取得数据库连接
通过java.sql.DriverManager驱动程序管理器的静态方法:
getConnection(String url,String user,String password)
可以建立数据库连接,其中,该静态方法的的第1个参数是连接数据库url地址,第2个参数是连接数据库的名称,第3个参数是连接数据库的登录密码,使用方法如下:
JDBC操作数据库的步骤_第2张图片

3.执行各种SQL语句(1)
1.执行静态的SQL语句对象
Statement接口的executeUpdate(String sql)方法将执行添加(insert)、修改(update)和删除(delete)的SQL语句,执行成功后,将返回一个int型数值,该数值为影响数据库记录的行数。Statement接口的executeQuery(String sql)方法将执行查询(select)语句,执行成功后,将返回一个ResultSet类型的结果集对象,该对象将存储所有满足查询条件的数据库记录。例如:
int num=statement.executeUpdate(“insert into wy_table values (33,‘添加’)”);
int num=statement.executeUpdate(“update wy_table set name= ‘修改’ where id=33");
int num=statement.executeUpdate(“delete form wy_table where id=6”);
ResultSet rs= statement. executeQuery(“select * from wy_table”);
注意:执行executeUpdate()方法或executeQuery(String sql)时,会
抛出SQLException类型的异常,所以需要通过try-catch进行捕
捉。
4.执行各种SQL语句(2)
2.执行预编译SQL语句对象
PreparedStatement接口的executeUpdate(String sql)方法将执行添加(insert)、修改(update)和删除(delete)的SQL语句,执行成功后,将返回一个int型数值,该值为影响数据库记录的行数。PreparedStatement接口的executeQuery(String sql)方法将执行查询(select)语句,执行成功后,将返回一个ResultSet类型的结果集对象,该对象将存储所有满足查询条件的数据库记录。例如:
PreparedStatement ps=con.prepareStatement(“insert into wy_table values (?,?)”);
ps.setInt(1,6);
ps.setString(2,“添加”);
int num=ps.executeUpdate();

PreparedStatement ps=con.prepareStatement(“select * from wy_table where id=?”);
ps.setInt(1,6);
ResultSet rs=ps.executeQuery();

5.执行各种SQL语句(3)
2.执行预编译SQL语句对象
使用PreparedStatement的好处:
依赖于服务器对预编译查询的支持,以及驱动程序处理原始
查询的效率,预备语句在性能上的优势可能有很大的不同。
安全是预备语句的另外一个特点,通过HTML表单接受用户
输入,然后对数据库进行更新时,一定要使用预备语句或存
储过程。
预备语句还能够正确地处理嵌入在字符串中的引号以及处理
非字符数据,例如,向数据库发送序列化后的对象。
注意:执行executeUpdate()方法或executeQuery(String sql)时,
会抛出SQLException类型的异常,所以需要通过try-catch进
行捕捉。

6.执行各种SQL语句(4)
3.执行数据库存储过程
CallableStatement接口的executeUpdate(String sql)方法将执行添加(insert)、修改(update)和删除(delete)的数据库的存储过程,执行成功后,将返回一个int型数值,该数值为影响数据库记录的行数。
CallableStatement接口的executeQuery(String sql)方法将执行查询数据库的存储过程,执行成功后,将返回一个ResultSet类型的结果集对象,该对象将存储所有满足查询条件的数据库记录。
例如,数据库中有如下一个存储过程:
CREATE PROCEDURE p_insert (@name varchar(20),@sex char(4),
@tel varchar(30),@address varchar(50),@birthday varchar(50))AS
insert into users(name,sex,tel,address,birthday)
values(@name, @sex,@tel,@address,@birthday)
GO
7.执行各种SQL语句(5)
2.执行数据库存储过程
通过CallableStatement对象执行数据库中的该存储过程:
CallableStatement cs=connection.prepareCall();
CallableStatement cs=connection.prepareCall("{call p_insert(?,?,?,?,?)}");
cs.setString(1,“城中狼”);
cs.setString(2,“男”);
cs.setString(3,“13180808073”);
cs.setString(4,“长春市和平大街”);
cs.setString(4,“1981-01-01”);
int num=cs.executeUpdate();
注意:CallableStatement对象执行executeUpdate()方法或
executeQuery(String sql)时,会抛出SQLException类型
异常,所以需要通过try-catch进行捕捉。
8.执行各种SQL语句(6)
3.执行数据库存储过程
使用CallableStatement处理存储过程的优缺点:
优点
语法错误可以在编译时找出来,而非在运行期间;数据库存储过程的运行可能比常规的SQL查询快得多;程序员只需知道输入和输出参数,不需了解表的结构。另外,由于数据库语言能够访问数据库本地的功能(序列,触发器,多重游标等操作),因此,用它来编写存储过程可能要比使用Java编程语言要简易一些。
缺点
存储过程的商业逻辑在数据库服务器上运行,而非客户机或Web服务器。而行业的发展趋势是尽可能多地将商业逻辑移出数据库,将它们放在JavaBean组件(或者在大型的系统中,EnterPrise JavaBean组件)中,在Web构架上采用这种方式的主要动机是:数据库访问和网络I/O常常是性能的瓶颈。
9.获取查询结果
通过各种Statemn接口的executeUpdate()或executeQuery()方法,将执行传入的SQL语句,并返回执行结果,如果执行的executeUpdate()方法,将返回一个int型数值,该数值表示影响数据库记录的行数;如果是执行executeQuery()方法,将返回一个ResultSet类型的结果集,为所有满足查询条件的数据库记录,但是通过ResultSet对象并不只是可以获取满足查询条件的记录,还可以获得数据表的相关信息,例如每列的名称、列的数量等。
10.关闭数据库连接
在操作完成数据库后,都要及时关闭数据库连接,释放连接占用的数据库和JDBC资源,以免影响软件的运行速度。
ResultSet、Statement和Connection接口均提供了关闭各自实例的close()方法,ResultSet、Statement和Connection接口关闭次序如图所示。
在这里插入图片描述
虽然Java的垃圾回收机制会定时清理缓存、关闭长时间不用的数据库连接、但是如果不及时关闭,数据库连接达到一定数量,将严重影响数据库和计算机运行速度,甚至瘫痪。

你可能感兴趣的:(JDBC操作数据库的步骤)