MENU

JDBC

September 27, 2018 • Read: 4220 • JSP阅读设置

准备工具展开目录

去网上下载 MySQL 和 Navicat,这里给个我们老师的网盘,里面有相关工具

MySQL展开目录

MySQL 的教程可以看我的这篇 MySQL 数据库入门学习

创建数据库展开目录

要想通过 java 连接数据库,首先通过 Navicat 工具连接 MySQL,然后创建数据库 jsp,再创建一个表单 user,表单里的字段以及相应的属性见下图
随便往里面添加一些数据

JDBC展开目录

Java 连接数据库分四步:1. 加载驱动类、2. 创建数据库连接、3. 向数据库发送声明、4. 获取返回的结果(结果集)、5. 关闭数据库连接。接下来我就这几步,详细说明其中使用到的类,以及用法

1. 加载驱动类展开目录

加载驱动类之前首先导入包含数据库编程所需的 JDBC 类。大多数情况下,使用 import java.sql.* 就够了

  • import java.sql.*;

接着就是加载驱动类,这样就可以打开与数据库的通信。以下是代码片段实现这一目标

  • Class.forName("com.mysql.jdbc.Driver");
2. 创建数据库连接展开目录

使用 DriverManager.getConnection() 方法来创建一个 Connection 对象,它代表一个数据库的物理连接,如下所示:

  • String final url = "jdbc:mysql://localhost:3306/jsp";//访问数据的url
  • String final username = "root";//数据库的用户名
  • String final password = null;//数据库的密码
  • Connection conn = DriverManager.getConnection(url, username, password);
3. 向数据库发送声明展开目录

需要使用一个类型为 StatementPreparedStatement 的对象,并提交一个 SQL 语句到数据库执行查询。如下:

  • String sql = "select * from user";
  • PreparedStatement pstmt = conn.PreparedStatement(sql);
  • ResultSet rs = pstmt.executeQuery();

最好使用 PreparedStatement,因为其会预处理声明,避免出现被 sql 注入的情况
如果要执行一个 SQL 语句:UPDATEINSERTDELETE 语句,那么需要下面的代码片段:

  • String sql = "delete from user";
  • PreparedStatement pstmt = conn.PreparedStatement(sql);
  • ResultSet rs = pstmt.executeUpdate()
4. 获取返回的结果展开目录

可以使用适当的 ResultSet.getXXX () 方法来检索的数据结果:

  • while(rs.next()){
  • //Retrieve by column name
  • int id = rs.getInt("id");
  • int age = rs.getInt("age");
  • String first = rs.getString("first");
  • String last = rs.getString("last");
  • //Display values
  • System.out.print("ID: " + id);
  • System.out.print(", Age: " + age);
  • System.out.print(", First: " + first);
  • System.out.println(", Last: " + last);
  • }

注意在获取返回的结果时,顺序不能乱,如果 getString (2) 然后再 getString (1) 将会报错。但是某些列可以不取,比方说取 1,2,4,6,... 不会报错

5. 关闭数据库连接,释放资源展开目录

在使用 JDBC 与数据交互操作数据库中的数据后,应该明确地关闭所有的数据库资源以减少资源的浪费。在关闭数据库连接的时候一定注意:与数据库连接的创建顺序相反ResultSet 可以手动关闭也可以不关闭,系统会默认帮我们关闭

  • pstmt.close();
  • conn.close();

第一个 JDBC 实例展开目录

基于上面的步骤,我们可以综合示例代码,使用以下代码作为模板来编写 JDBC 代码

  • <%@page import="cn.edu.wic.jsp.bean.User"%>
  • <%@page import="java.sql.DriverManager"%>
  • <%@page import="java.sql.ResultSet"%>
  • <%@page import="java.sql.PreparedStatement"%>
  • <%@page import="java.sql.Connection"%>
  • <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  • <%
  • String path = request.getContextPath();
  • String basePath = request.getScheme() + "://"
  • + request.getServerName() + ":" + request.getServerPort()
  • + path + "/";
  • %>
  • <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  • <html>
  • <head>
  • <base href="<%=basePath%>">
  • <title>JDBC</title>
  • <meta http-equiv="pragma" content="no-cache">
  • <meta http-equiv="cache-control" content="no-cache">
  • <meta http-equiv="expires" content="0">
  • <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  • <meta http-equiv="description" content="This is my page">
  • </head>
  • <body>
  • <%
  • List<User> users = new ArrayList<User>();
  • Connection conn = null;
  • PreparedStatement pstmt = null;
  • ResultSet rs = null;
  • try {
  • Class.forName("com.mysql.jdbc.Driver");
  • String url = "jdbc:mysql://localhost:3306/jsp";
  • String username = "root";
  • String password = null;
  • conn = DriverManager.getConnection(url, username, password);
  • pstmt = conn.prepareStatement("select * from user");
  • rs = pstmt.executeQuery();
  • while (rs.next()) {
  • User user = new User();
  • user.setId(rs.getInt("id"));
  • user.setUsername(rs.getString("username"));
  • user.setPassword(rs.getString("password"));
  • user.setName(rs.getString("name"));
  • out.print(user.getId() + "," + user.getUsername() + ","
  • + user.getPassword() + "," + user.getName());
  • }
  • } catch (Exception e) {
  • e.printStackTrace();
  • } finally {
  • if (pstmt != null) {
  • try {
  • pstmt.close();
  • } catch (Exception e) {
  • }
  • }
  • if (rs != null) {
  • try {
  • conn.close();
  • } catch (Exception e) {
  • }
  • }
  • }
  • %>
  • </body>
  • </html>

这里说明一点,我把所有的信息都保存到 User 类中,用一个 List 存放所有的 User 类的对象

Last Modified: October 7, 2018
Archives Tip
QR Code for this page
Tipping QR Code
Leave a Comment