Java Web开发——第八章JSP中使用数据库

前言

本章为《JSP实用教程》第四版 耿祥义 张跃平主编
软件版本号为:

Tomcat:9.0
Java:jdk13

连接MySQL数据库

下载jdbc-mysql数据库连接器
将MySQL数据库的JDBC-MySQL数据库连接器mysql-connector-java-8.0.18.jar保存到Tomcat安装目录下的lib文件夹中(例如D:\apache-tomcat-9.0.26\lib),并重新启动Tomcat服务器。

加载jdbc-mysql数据库连接器
MySQL数据库驱动是mysql-connector,java-8.0.18.jar文件中的Driver类,该类的包名是com.mysql.cj.jdbc.Driver(包名和以前的版本不同)。Driver类不是Java运行环境类库中的类,是连接器mysql-connector-java-8.0.18.jar中的类。

连接数据库
java.sql包中的DriverManager类有两个用于建立连接的类方法(static方法):

Connection getConnection (java.lang.String,java.lang.String,java.lang.String)
Connection getConnection(java.lang.String)

注意:如果数据库的表中的记录有汉字,那么在建立连接时需要额外多传递一个参数characterEncoding,并取值GB2312或UTF-8:

查询记录

结果集与查询

对一个数据库中的表进行查询,然后将查询结果返回到一个ResultSet对象中,习惯称ResultSet对象为结果集对象。

有了SQL语句对象后,这个对象就可以调用相应的方法查询数据库中的表,并将查询结果存放在一个ResultSet结果集中。例如:

ResultSet rs= sql.executeQuery(“SELECT * FROMbookList”);

随机查询

前面ResultSet结果集使用next()方法顺序地查询记录,但有时候要在结果集中前后移动、显示结果集指定的一条(一行)记录或随机显示若干条记录等。这时,必须返回一个可滚动的结果集为了得到一个可滚动的结果集,须使用下述方法先获得一个Statement对象:

Statement stmt = con.createStatement(int type, int concurrency);

条件查询

1.where子语句

格式为:

select 字段 from 表明 where 条件;

2.排序

用order by语句,格式为:

select * from表名order by字段名(列名)select * from表名where条件order by字段名(列名)

更新,添加与删除记录

Statement对象调用方法:

public int executeUpdate(String sqlStatement);

1.更新

update表set字段=新值where<条件子句>

2.添加

update表set字段=新值where<条件子句>

3.删除

delete from表名where<条件子句>

用结果集操作数据库中的表

更新记录

使用结果集更新数据库表中第n行记录中某列的值的步骤如下。
(1)游标移动到第n行。结果集rs调用absolute()方法将游标移到第n行:

rs.absolute(n);

(2)结果集rs将第n行的column列的列值更新。结果集可以使用下列方法更新列值:

updateInt(String column, int x),updateInt(int column int x)

(3)更新数据表.调用updateRow()方法.

插入数据

具体代码为:

rs.moveToInsertRow();

(2)更新记录

rs.updateString(1,“210401010”);
rs.updateString(2,“JSP”);
rs.updateFloat(3,38);
rs.updateDate(4,‘2021-5-20’);

(3)插入记录.调用insertRow()方法.

预处理语句

Java提供了更高效率的数据库操作机制,就是PreparedStatement对象,该对象被习惯地称作预处理语句对象。本节学习怎样使用预处理语句对象操作数据库中的表.

预处理语句的优点

当向数据库发送一个SQL语句,例如"select * from bookLsit",数据库中的SQL解释器负责将把sql语句输出的底层的内部命令,如何执行该命令,完成有关的数据操作.如果不断地向数据库提交sql语句势必增加数据库中sql解析器的负担,影响执行的速度.如果应用程序能针对连接的数据库,事先就将sql语句解析为数据库底层的内部命令,然后直接让数据库去执行这个命令,显然不仅减轻了数据库的负担,而且也提高了访问数据库的速度.

Connection连接对象con调用prepareStatement(String sq1)方法:

PreparedStatement pre= con.prepareStatement(String sql);

使用通配符

对sql进行预处理时可以使用通配符?来代替字段.

例如:

pre.setFloat(2,75);

事务

事务由一组SQL语句组成。所谓“事务处理”是指应用程序保证事务中的SQL语句要么全部都执行,要么一个都不执行。

1.用setAutoCommit(boolean b)方法关闭自动提交模式
的默认设置)。
连接con首先调用setAutoCommit(boolean autoCommit)方法,将参数autoCommit取值为false来关闭自动提交模式:

2.用commit方法处理事务

3.用rollback()方法来处理事务失败.

总结

欢迎指正

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值