栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVAWEB(三)Java与数据库

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVAWEB(三)Java与数据库

初识JDBC

JDBC是什么?JDBC英文名为:Java Data Base Connectivity(Java数据库连接),官方解释它是Java编程语言和广泛的数据库之间独立于数据库的连接标准的Java API,根本上说JDBC是一种规范,它提供的接口,一套完整的,允许便捷式访问底层数据库。可以用JAVA来写不同类型的可执行文件:JAVA应用程序、JAVA Applets、Java Servlet、JSP等,不同的可执行文件都能通过JDBC访问数据库,又兼备存储的优势。简单说它就是Java与数据库的连接的桥梁或者插件,用Java代码就能操作数据库的增删改查、存储过程、事务等。

我们可以发现,JDK自带了一个java.sql包,而这里面就定义了大量的接口,不同类型的数据库,都可以通过实现此接口,编写适用于自己数据库的实现类。而不同的数据库厂商实现的这套标准,我们称为数据库驱动。

准备工作


那么我们首先来进行一些准备工作,以便开始JDBC的学习:

  • 将idea连接到我们的数据库,以便以后调试。
  • 将mysql驱动jar依赖导入到项目中(推荐6.0版本以上,这里用到是8.0)

一个Java程序并不是一个人的战斗,我们可以在别人开发的基础上继续向上开发,其他的开发者可以将自己编写的Java代码打包为jar,我们只需要导入这个jar作为依赖,即可直接使用别人的代码,就像我们直接去使用JDK提供的类一样。

使用JDBC连接数据库

注意:6.0版本以上,不用手动加载驱动,我们直接使用即可!

import java.sql.*;
  • 注意connection和statement都要close
  • 这里的连接URL可以根据idea中的 数据库属性 中获取
  • 在运行前要先在 数据库属性中 设置 使用的数据库
import java.sql.*;

public class Main {
    public static void main(String[] args) {
        //1. 通过DriverManager来获得数据库连接
        try (Connection connection = DriverManager.getConnection("连接URL", "用户名", "密码");
             //2. 创建一个用于执行SQL的Statement对象
            Statement statement = connection.createStatement()) {   //注意前两步都放在try()中,因为在最后需要释放资源
            //3. 执行SQL语句,并得到结果集
            ResultSet set = statement.executeQuery("select * from 表名");
            //4. 查看结果
            while (set.next()) {
                System.out.println(set.getString(1));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        //5. 释放资源,try-with-resource语法会自动帮助我们close
    }
}

public class Main {
    public static void main(String[] args) {
        //1. 通过DriverManager来获得数据库连接
        try (Connection connection = DriverManager.getConnection(
                "jdbc:mysql://localhost:3306/shopDatabase", "root", "root123456");
             //2. 创建一个用于执行SQL的Statement对象
            Statement statement = connection.createStatement()) {   //注意前两步都放在try()中,因为在最后需要释放资源
            //3. 执行SQL语句,并得到结果集
            ResultSet set = statement.executeQuery("select * from user");
            //4. 查看结果
            while (set.next()) {
                System.out.println(set.getString(1));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        //5. 释放资源,try-with-resource语法会自动帮助我们close
    }
}

其中,连接的URL如果记不住格式,我们可以打开idea的数据库连接配置,复制一份即可。(其实idea本质也是使用的JDBC,整个idea程序都是由Java编写的,实际上idea就是一个Java程序)

了解DriverManager

我们首先来了解一下DriverManager是什么东西,它其实就是管理我们的数据库驱动的:

public static synchronized void registerDriver(java.sql.Driver driver,
        DriverAction da)
    throws SQLException {

    
    if(driver != null) {
        registeredDrivers.addIfAbsent(new DriverInfo(driver, da));    //在刚启动时,mysql实现的驱动会被加载,我们可以断点调试一下。
    } else {
        // This is for compatibility with the original DriverManager
        throw new NullPointerException();
    }

    println("registerDriver: " + driver);

}

我们可以通过调用getConnection()来进行数据库的链接:

@CallerSensitive
public static Connection getConnection(String url,
    String user, String password) throws SQLException {
    java.util.Properties info = new java.util.Properties();

    if (user != null) {
        info.put("user", user);
    }
    if (password != null) {
        info.put("password", password);
    }

    return (getConnection(url, info, Reflection.getCallerClass()));   //内部有实现
}

我们可以手动为驱动管理器添加一个日志打印:

static {
    DriverManager.setLogWriter(new PrintWriter(System.out));   //这里直接设定为控制台输出
}

了解Connection

Connection是数据库的连接对象,可以通过连接对象来创建一个Statement用于执行SQL语句:

Statement createStatement() throws SQLException;

我们发现除了普通的Statement,还存在PreparedStatement:

PreparedStatement prepareStatement(String sql)
    throws SQLException;

在后面我们会详细介绍PreparedStatement的使用,它能够有效地预防SQL注入式攻击。

它还支持事务的处理,也放到后面来详细进行讲解。

了解Statement

我们发现,我们之前使用了executeQuery()方法来执行select语句,此方法返回给我们一个ResultSet对象,查询得到的数据,就存放在ResultSet中!

Statement除了执行这样的DQL语句外,我们还可以使用executeUpdate方法来执行一个DML或是DDL语句,它会返回一个int类型,表示执行后受影响的行数,可以通过它来判断DML语句是否执行成功。

也可以通过excute()来执行任意的SQL语句,它会返回一个boolean来表示执行结果是一个ResultSet还是一个int,我们可以通过使用getResultSet()或是getUpdateCount()来获取。

执行DML操作
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/937533.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号