JDBC在jsp中的使用

今天在学习JDBC在jsp中的应用时遇到了一些问题,解决后记录一下,希望对其他人能有帮助。
默认读者具有一定的jsp和数据库知识,所以对这两者不做介绍,本文主要是解决按照书上的代码敲出来最后却不能得到想要的结果的问题。
第一步,导包
导入需要的包,例如java.sql.* java.io.*
第二步,加载数据库驱动
大家为了更好的记忆操作步骤,不要每次建立数据库连接时都要找资料,我们应该了解每一步都是为了达到什么目的,例如现在的加载数据库驱动,可能有人会问?什么是数据库驱动呢?

数据库驱动是不同数据库开发商(比如oracle mysql等)为了某一种开发语言环境(比如java)能够实现统一的数据库调用而开发的一个程序,他的作用相当于一个翻译人员,将Java语言中对数据库的调用语言通过这个翻译翻译成各个种类的数据库自己的数据库语言,当然这个翻译(数据库驱动)是由各个开发商针对统一的接口自定义开发的

由于数据库有各种各样的,例如mysql,oracle等,并且不同数据据对数据的操作指令也存在差异,那么如果我们想要能够使用各种数据库,就必须学习不同数据库的操作指令,这是一件耗费时间精力并且不容易达成的事情。就算你精通各种数据库操作的指令,请试想这样一种情况,一个已经完成的项目使用A数据库储存数据,但是在后来的测试过程中发现A数据库不能满足项目需求,甲方要求换成B数据库,就算你会B数据库的操作,可庞大的代码修改也让人头痛欲裂。所以,为了解决这些问题,我们需要一门通用的数据库操作语言,其实也就是大家熟知的SQL,我们在对任何数据库操作时只要使用SQL就行了,而数据库驱动就是SQL与底层操作指令之间的”翻译官“,感觉和编译器差不多。
先去官网下载驱动程序官网地址
下载压缩包后解压,然后将解压后的jar文件添加到Web程序的WEB-INF/lib目录下(可能没有lib目录,可创建一个)与Tomcat服务器的lib目录下,尤其要注意后面,很多人都是没有后面这一步导致迟迟不能成功。
可能又有人好奇了,想知道jar包是什么。要完全说明白也挺难的,简单地说,jar是一种文件格式(废话),里面可以包含.class 文件、图像和声音等资源,这里有必要说明一下.class文件。
众所周知,java语言的一大特点就是跨平台,一次编写,导出运行。
在JDK的BIN目录下有javac.exe 与java.exe两个可执行文件,他们的功能分别如下:
javac.exe是java编译工具,它可以将编写好的java文件编译成java字节码文件,也就是.class文件


java.exe是java运行工具,它会启动一个java虚拟机(JVM)进程,java虚拟机相当于一个虚拟的操作系统,专门负责运行由java编译器生成的字节码(.class)文件。
而不同操作系统下的JVM是不一样的,这也就是java能跨平台的原因,不同的虚拟机把.class文件翻译成能适应自己平台的可执行程序,是不是感觉和前面说的数据库驱动有点相似呢。

//加载数据库驱动
//不同数据库的驱动加载不一样,大家可自行百度
    try {
    
    
        Class.forName("com.mysql.jdbc.Driver");
    } catch (ClassNotFoundException e) {
    
    
        e.printStackTrace();
    }

创建与数据库的连接

	String url = "jdbc:mysql://localhost:3306/test";
//创建与数据库的连接
    Connection con =null;
    try {
    
    
        con = DriverManager.getConnection(url, user, passwd);
    } catch (SQLException ee) {
    
    
        ee.printStackTrace();
    }
    assert con != null;
    Statement statement = null;

关于assert

assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告并且退出

也可以用if语句实现该功能
url语句中的localhost是要连接的主机,3306是连接端口,test是要连接的数据库名.
创建statement对象

	Statement statement = null;
    //创建语句对象
    try {
    
    
        statement = con.createStatement();
    } catch (SQLException e ) {
    
    
        e.printStackTrace();
    }

然后就可以通过statement.execute(sql)来执行sql语句了

下面是我在IDEA上成功从数据库获取数据的代码

<%--
  Created by IntelliJ IDEA.
  User: luo'xin
  Date: 2021/5/9
  Time: 15:11
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.sql.*,java.io.*" %>
<html>
<head>
    <title>数据库连接</title>
</head>
<body>
<%!
    //先定义方法,传入out对象和要输出的内容
    public void JPrint(javax.servlet.jsp.JspWriter out, String str) throws IOException {
    
    
        out.print(str);
    }
%>
<%
    request.setCharacterEncoding("utf-8");
    String url = "jdbc:mysql://localhost:3306/test";
    String user = "root";
    String passwd = "123456";
    //加载数据库驱动
    try {
    
    
        Class.forName("com.mysql.jdbc.driver");
    } catch (ClassNotFoundException e) {
    
    
        e.printStackTrace();
    }
    //创建与数据库的连接
    Connection con =null;
    try {
    
    
        con = DriverManager.getConnection(url, user, passwd);
    } catch (SQLException ee) {
    
    
        ee.printStackTrace();
    }
    assert con != null;
    Statement statement = null;
    //创建语句对象
    try {
    
    
        statement = con.createStatement();
    } catch (SQLException e ) {
    
    
        e.printStackTrace();
    }
    String mysql = "select * from people";
    ResultSet rs = statement.executeQuery(mysql);
    String name;
    int id, gender;
    JPrint(out, "从数据库中获取的内容为:<br>");
    try {
    
    
        while (rs.next()) {
    
    
            JPrint(out, rs.getString("name"));
            JPrint(out, rs.getString("id"));
            JPrint(out, rs.getString("gender") + "<br>");
        }
        rs.close();
        statement.close();
        con.close();
    } catch (Exception e) {
    
    
        e.printStackTrace();
    }
%>
</body>
</html>

猜你喜欢

转载自blog.csdn.net/m0_45972156/article/details/116566177