JSP 连接 MySQL 数据库&获取数据库数据

本文介绍了如何在JSP中连接MySQL数据库并获取数据。前提条件包括熟悉JSP语法、配置Tomcat、Java SE 9环境和MySQL。主要涉及DriverManager、Connection、getConnection()、Statement、ResultSet等概念,并讲解了JDBC URL的一般格式。此外,文章提示在新版本Java中,已不再需要使用Class.forName()加载JDBC驱动。

这篇文章假设你已经:

  • 掌握 JSP 基本语法
  • 配置 Tomcat
  • 配置 Java SE 9 环境
  • 配置 MySQL
  • MySQL 已写入数据(数据库名:test_schema; 表名:test_table;)
  • 为 MySQL 配置好 JDBC 接口 (JDBC Interface)
具体实现方法如下:
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>

<%@page import="java.sql.*"%>
//导入跟数据库相关的包,以便做数据库连接、数据增删改查操作
<%
    String userName = "root";    //数据库账户名
    String userPasswd = "******";    //数据库密码
    String schemaName = "test_schema";    //数据库名
    String tableName = "test_table";    //数据库表名
    String url = "jdbc:mysql://localhost:3306/"+schemaName+"?user="+userName+"&password="+userPasswd;    //数据库url
    Connection connection = DriverManager.getConnection(url);    //通过url连接数据库
    Statement statement = connection.createStatement();    //获取可执行sql语句的对象
    String sql = "SELECT * FROM " + tableName;    //sql语句,遍历数据表的参数
    ResultSet rs = statement.executeQuery(sql);    //执行sql语句并将数据表返回给ResultSet
%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <table align="center" cellspacing="0" border="1">    //创建table方便展示数据
            <tr>  
                <th>表头标题1</th>  
                <th>表头标题2</th>  
                <th>表头标题3</th>  
            </tr>  
            <% while (rs.next()) { %>    //遍历数据表的行
            <tr>  
                <td><%out.print(rs.getString(1));%></td>    //显示数据表当前行的第1列
                <td><%out.print(rs.getString(2));%></td>    //显示数据表当前行的第2列 
                <td><%out.print(rs.getString(3));%></td>    //显示数据表当前行的第3列
            </tr>  
            <% } %>  
        </table>  
    </body>
</html>
理解一些概念:
  • DriverManager
    Java SE 9 接口文件 java.sql 中定义的一种对象:

    The basic service for managing a set of JDBC drivers.

    大致意思是 DriverManager 是用来管理 JDBC 驱动的基础服务。
    在 java.sql > DriverManager 中有详细说明。

  • Connection
    Java SE 9 接口文件 java.sql 中定义的一种对象:

    A connection (session) with a specific database. SQL statements are executed and results are returned within the context of a connection.

    大致意思是 Connection 能与特定数据库连接,同时允许 SQL 在其中执行语句和返回结果。
    在 java.sql > Connection 中有详细说明。

  • getConnection()
    Java SE 9 接口文件 java.sql 对象 Connection 的一种方法:

    Attempts to establish a connection to the given database URL. The DriverManager attempts to select an appropriate driver from the set of registered JDBC drivers.

    大致意思是 getConnection() 是一种通过 URL 与数据库建立连接的方法。
    getConnection() 根据不同的输入参数,有不同的调用方法。在 java.sql > DriverManager # getConnection() 中有详细说明。

  • 通过 URL 访问数据库

    MySQL Connector/J 里提到:

    The general format for a JDBC URL for connecting to a MySQL server is as follows, with items in square brackets ([ ]) being optional:
    jdbc:mysql://[host1][:port1][,[host2][:port2]]…[/[database]] »
    [?propertyName1=propertyValue1[&propertyName2=propertyValue2]…]

    可见通过 JDBC 访问 MySQL,URL 一般格式:
    "jdbc:mysql://" + MySQL的IP地址 + IP地址对应端口 + "?" + MySQL参数名 + "=" + "对应参数值 ...

  • Statement
    Java SE 9 接口文件 java.sql 中定义的一种对象:

    The object used for executing a static SQL statement and returning the results it produces.

    大致意思是 Statement 是用来执行静态的 SQL 语句和返回结果的。
    在 java.sql > Statement 中有详细说明。

  • createStatement()
    Java SE 9 接口文件 java.sql 对象 Connction 的一种方法:

    Creates a Statement object for sending SQL statements to the database.

    大致意思是 createStatement()是创建 Statement 这个对象的。
    在 java.sql > Connction # createStatement() 中有详细说明。

  • ResultSet
    Java SE 9 接口文件 java.sql 中定义的一种对象:

    A table of data representing a database result set, which is usually generated by executing a statement that queries the database.

    大致意思是 Statement 是用来表示数据库结果集的一种表格。
    在 java.sql > ResultSet 中有详细说明。

需要留意
  • 在 Java SE 9 的 java.sql > DriverManager 中提到了

    NOTE: The DataSource interface, provides another way to connect to a data source. The use of a DataSource object is the preferred means of connecting to a data source.

    大致意思是“有比 DriverManager 更好的连接数据库方式——使用 DataSource”。有兴趣可以去了解一下 DataSource 以及「连接池」相关知识。

  • 在 Java SE 7 中 DriverManager 中提到了

    Applications no longer need to explictly load JDBC drivers using Class.forName(). Existing programs which currently load JDBC drivers using Class.forName() will continue to work without modification.

    大致意思是 不再需要通过 Class.forName() 来加载 JDBC,目前网络上仍有不少教程还依旧保留这样的码段来连接 MySQL:

    <%  
        String driverName = "com.mysql.jdbc.Driver";    //驱动名称
        String userName = "root";  
        String userPasswd = "******";  
        String dbName = "test_schema";  
        String tableName = "test_table";  
        String url = "jdbc:mysql://localhost:3306/" + dbName + "?user=" + userName + "&password=" + userPasswd;  
        Class.forName(driverName).newInstance();    //调用 Class.forName 加载驱动
        Connection connection = DriverManager.getConnection(url);
        Statement statement = connection.createStatement();  
        String sql = "SELECT * FROM " + tableName;  
        ResultSet rs = statement.executeQuery(sql);
    %>

    因此新版本 Java SE(至少从 Java SE 7开始)可以直接省略 Class.forName() 加载驱动这一步骤。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值