JDBC

准备工具

 去网上下载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类的对象

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏逆向技术

x64内核HOOK技术之拦截进程.拦截线程.拦截模块

            x64内核HOOK技术之拦截进程.拦截线程.拦截模块 一丶为什么讲解HOOK技术. 在32系统下, 例如我们要HOOK SSDT表,那么...

51570
来自专栏JadePeng的技术博客

XNginx - nginx 集群可视化管理工具

之前团队的nginx管理,都是运维同学每次去修改配置文件,然后重启,非常不方便,一直想找一个可以方便管理nginx集群的工具,翻遍web,未寻到可用之物,于是自...

2.1K40
来自专栏Java3y

JDBC面试题都在这里

以下我是归纳的JDBC知识点图: ? 图上的知识点都可以在我其他的文章内找到相应内容。 JDBC常见面试题 JDBC操作数据库的步骤 ? JDBC操作数据库的步...

60840
来自专栏java学习

java链接数据库简单教程(JDBC)

Java基础 | 数据库 | Android | 学习视频 | 学习资料下载 ★回复【数据库工具】获取数据库安装包以及安装视频教程链接 注:(本文以连接orac...

41560
来自专栏java思维导图

教你88秒插入1000万条数据到mysql数据库表

其实我在插入1000万条数据的时候遇到了一些问题,现在先来解决他们,一开始我插入100万条数据时候报错,控制台的信息如下:

20440
来自专栏青玉伏案

JDBC与JAVA数据库编程

一、JDBC的概念 1、 JDBC (Java DataBase Connectivity) Java数据库连接     a) 主要提供java数据库应用程序...

20860
来自专栏c#开发者

利用JDBC对数据库的增删查改

   在本节中,我们将通过一个示例说明如何利用JDBC对数据库进行增删查改等各种操作,以及怎样对结果集中的数据进行处理。     我们假设现在数据库中有一张...

37380
来自专栏程序员阿凯

弯弯的小船悠悠 -- JDBCUtil 工具类

15120
来自专栏一名合格java开发的自我修养

java:JDBC详解

JDBC全称为:Java DataBase Connectivity(java数据库连接)。

13250
来自专栏MasiMaro 的技术博文

派遣函数

驱动程序的主要功能是用来处理IO请求,而大部分的IO请求是在派遣函数中完成的,用户模式下所有的IO请求都会被IO管理器封装为一个IRP结构,类似于Windows...

14910

扫码关注云+社区

领取腾讯云代金券