第8章 JSP 中使用数据库

8.1 MySQL数据库管理系统

MySQL是一种常用的关系型数据库管理系统(RDBMS),它提供了高效、可靠的数据存储和管理解决方案。本篇博客将介绍MySQL的下载、安装、连接以及基本的数据库操作。

8.1.1 下载、安装MySQL

要开始使用MySQL,首先需要下载并安装MySQL数据库服务器。可以从MySQL官方网站(https://www.mysql.com)上下载适合您操作系统的安装程序。按照安装向导的指示进行安装,并设置数据库的用户名和密码。

8.1.2 启动MySQL

安装完成后,可以启动MySQL服务器。在Windows系统上,可以通过MySQL的服务管理器来启动和停止MySQL服务。在Linux系统上,可以使用命令行工具或服务管理命令来启动和停止MySQL。

8.1.3 MySQL客户端管理工具

MySQL提供了多种客户端管理工具,用于连接和管理MySQL数据库。其中一种常用的工具是MySQL Workbench,它提供了图形化界面和丰富的功能,方便用户进行数据库管理和操作。

8.2 连接MySQL数据库

要连接MySQL数据库,可以使用MySQL提供的命令行工具或者客户端管理工具。在命令行中,可以使用以下命令来连接到MySQL数据库:

mysql -u 用户名 -p 密码

通过客户端管理工具,可以使用图形化界面来输入用户名、密码和连接信息来连接到MySQL数据库。

8.3 创建数据库和表

一旦连接到MySQL数据库,我们可以使用SQL语句来创建数据库和表。以下是一个创建数据库和表的示例:

CREATE DATABASE mydatabase; USE mydatabase; CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), email VARCHAR(50) );

8.4 更新、添加和删除记录

通过使用SQL语句,我们可以更新、添加和删除数据库表中的记录。以下是一些示例:

更新记录:

UPDATE users SET email = 'newemail@example.com' WHERE id = 1;

添加记录:

INSERT INTO users (name, email) VALUES ('John Doe', 'johndoe@example.com');

删除记录:

DELETE FROM users WHERE id = 1;

8.5 通过结果集操作数据库表

通过查询数据库表,我们可以获取结果集并对其进行操作。以下是一个查询并处理结果集的示例:

SELECT * FROM users; ResultSet rs = statement.executeQuery("SELECT * FROM users"); while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); String email = rs.getString("email"); System.out.println("ID: " + id + ", Name: " + name + ", Email: " + email); }

8.6 预处理语句

为了提高性能和安全性,MySQL支持预处理语句。预处理语句可以预编译并缓存,多次执行时效率更高,并且可以防止SQL注入攻击。以下是一个使用预处理语句的示例:

String query = "INSERT INTO users (name, email) VALUES (?, ?)"; PreparedStatement statement = connection.prepareStatement(query); statement.setString(1, "Jane Doe"); statement.setString(2, "janedoe@example.com"); statement.executeUpdate();

8.7 事务

MySQL支持事务,可以确保一系列数据库操作的原子性和一致性。在事务中,要么所有操作都成功提交,要么都回滚到事务开始之前的状态。以下是一个事务的示例:

connection.setAutoCommit(false); try { // 执行一系列数据库操作 connection.commit(); // 提交事务 } catch (SQLException e) { connection.rollback(); // 回滚事务 }

8.8 分页显示记录

在处理大量数据时,分页显示记录是很常见的需求。MySQL提供了LIMIT子句来限制查询结果的行数,并通过OFFSET参数指定起始位置。以下是一个分页查询的示例:

SELECT * FROM users LIMIT 10 OFFSET 20;

8.9 连接SQL Server和Access

除了连接MySQL数据库,还可以连接其他类型的数据库,如Microsoft SQL Server和Access数据库。

8.9.1 连接Microsoft SQL Server数据库

要连接Microsoft SQL Server数据库,需要下载并安装Microsoft SQL Server的驱动程序。然后可以使用Java的JDBC API来连接并操作SQL Server数据库。

8.10 使用连接池


8.10.1 连接池简介

连接池用于创建和管理数据库连接的缓冲池技术,缓冲池中的连接可以被任何需要他们的线程使用。当一个线程需要用JDBC对一个数据库操作时,将从池中请求一个连接。当这个连接使用完毕后,将返回到连接池中,等待为其他的线程服务。

8.10.2 建立连接池
1、连接池配置的文件

        为了让 Tomcat 服务器创建连接池,必须编写一个 XML 文件,Tomcat 服务器通过读取该文件创建连接池。XML 文件的名字必须是 context.xml。内容如下:

<?xml version = "1.0" encoding = "utf-8"?>
<Context>
    <Resource
        name = "gxy"
        type = "javax.sql.DataSource"
        deriverClassName - "com.mysql.cj.jbcb.Driver"
        url = "jdbc:mysql://127.0.0.1:3306/bookDatabase?useSSL = false
        &amp;serverTimezone = CST&amp;characterEncoding = utf-8"
        username = "root"
        password = ""
        maxActive = "15"
        maxIdle = "15"
        minIdle = "1"
        maxIdle = "1000"
    />
</Context>
将连接池配置文件保存在 context.xml 文件保存在 Web 服务目录的 META-INF 子目录中。

        连接池配置文件 context.xml 中的 Resource 标记通知 Tomcat 服务器创建数据源,Resource 标记中各个属性的意义如下:

(1)name:设置连接池的名字,例如 gxy,改密工资是连接池的 id,context.xml 文件中,如果有多个 Resource 标记,必须保证其中的 name 互不相同。

(2)type:设置连接池的类型,这里必须是 javax.sql.DataSource,即 Tomcat 服务器把创建的 Connection 对象存放在实现 DataSource 接口的对象中,即连接池是一个 DataSource 型对象。

(3) driverClassName:设置数据库连接器,即数据库驱动的类。不同版本的 MYSQL 其名称各不相同。

(4)url:设置连接数据库的 URL。需要注意的是对于 url 中的 & 字符要写成“&”,这是 XML 文件对特殊字符的一个特殊规定。

(5)username:给出可以访问数据库的用户名,例如 root。

(6)password:给出访问数据库的密码,用户默认是无密码。

(7)maxActive:设置连接池的大小,即连接池中处于活动状态 Connection 对象的数目。maxActive 取值不可以超过数据库系统允许的最大连接数目。

(8)maxIdle:设置连接池中可处于空闲状态的 Connection 对象的最大数目,取值非正整数,表示无限制,如果取正整数,那么空闲状态的 Connection 对象多余 6 个时,Tomcat 服务器会释放多余的 Connection 对象,即从连接池中删除多余的 Connection 对象。

(9)minIdle:设置连接池中保证处于空闲状态的 Connection 对象的最小数目。当连接池中仅仅剩下两个空闲状态 Connection 对象时,此刻如果同时有两个用户需要使用连接池中的 Connection 对象,那么二者只能有一个获得 Connection 对象,另一个用户必须等待。

(10)maxWait:设置连接池中没有空闲状态 Connection 对象可用时,用户请求获得连接池中 Connection 对象需要等待的最长时间,如果超出 maxWait 设置的时间,Tomcat 服务器将抛出一个 TimeoutException 给用户。取值负数,表示用户可以无限时等待。

2、使用连接池

        应用程序必须到 Tomcat 服务器中去获得连接池。步骤如下:

(1)Context 接口

        首先创建一个实现 Context 接口的对象:

Context context = new InitialContext( );

然后让 context 去寻找 Tomcat 服务器曾绑定在运行环境中的另一个 Context 对象:

Context contextNeeded = (Context)context.lookup("java:comp/env");

其中的 java:comp/env 是 Tomcat 服务器绑定这个 Context 对象时使用的资源标识符。

(2)得到连接池

        Tomcat 服务器通过连接池配置文件 context.xml 将连接池绑定在 Context 对象 contextNeeded 中。绑定用的资源标志符是连接池配置文件 context.xml 中 name 给的值。因此,从 contextNeeded 中或的代码池的代码是:

DataSource ds = (DataSource)contextNeeded.lookup("gxy");

(3)从连接池中获得连接

        获得连接池之后,就可以从连接池中获得 Connection 对象。连接池中都是已经创建好的 Connection 对象,连接池调用 getConnection()方法,如果有空闲的 Connection 对象,该方法就返回一个 Connection 对象,如果没有空闲的 Connection 对象,该方法将使得用户线程处于 warning 状态,即等待该方法返回 Connection 对象。代码如下:

Connection con = ds.getConnection();

(4)将连接返回连接池

        当 Web 应用程序不再需要 Connection 对象时,就让 Connection 对象调用 close()方法,这样就可以把这个 Connection 对象再放回连接池中,以便其他 Web 应用程序使用这个 Connection 对象。如果用户忘记 Connection 对象再返回连接池中,将可能很快导致连接池中无 Connection 对象可用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值