山西农业大学20240911

一. JDBC

JDBC是Java官方提供的一套API, 用与连接各种数据库; JDBC提供了一组用于执行SQL语句的Java方法, 以及连接到数据库和处理查询结果的一些工具和类

1. JDBC核心接口

  • Connection : 表示数据库的连接
  • Statement: 用来执行SQL(DDL,DML,DQL)语句的语句对象
  • PreparedStatement: 用来执行预编译SQL语句的语句对象
  • ResultSet: 用来表示查询的结果集

注意: 不同的DBMS都会提供具体的实现类, 并打包为jar, 这个jar包被称为连接该DBMS的驱动(Driver)

2. JDBC使用流程

2.0 前期准备

在这里插入图片描述
在这里插入图片描述

2.1 pom.xml中添加依赖

方式1: Maven仓库地址: https://mvnrepository.com
方式2:
在这里插入图片描述
在pom.xml中添加MYSQL数据库的依赖, 并刷新maven

<!--    指定JDK版本-->
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
    <dependencies>
        <!-- 连接MySQL数据库的依赖 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.15</version>
        </dependency>
    </dependencies>

在这里插入图片描述

3. JDBC使用示例

3.1 JDBCDemo1
package jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * 演示JDBC使用
 * 需求: 在tedu库下创建userinfo(id,username,password,nickname,age);
 *
 */
public class JDBCDemo1 {
    public static void main(String[] args) {
        /*
            1. 加载驱动
            2. 创建数据库的连接对象 : DriverManager
            3. 创建执行SQL语句的对象 : Statement
            4. 执行SQL语句
            5. 获取SQL语句执行的结果
            6. 关闭连接
         */

        try {
            // 1. 加载驱动 , Alt+Enter处理异常: try/catch
            Class.forName("com.mysql.cj.jdbc.Driver");
            // 2. 创建数据库连接对象
            Connection connection = DriverManager.getConnection(
                    //直接去浏览器复制即可,注意更改库名tedu,
                    "jdbc:mysql://localhost:3306/tedu?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true",
                    "root","root"
            );
            System.out.println("数据库连接成功");
            // 3.创建执行SQL语句的对象 : Statement
            Statement statement = connection.createStatement();
            String sql = "CREATE TABLE userinfo(" +
                    "id INT PRIMARY KEY AUTO_INCREMENT," +
                    "username VARCHAR(32)," +
                    "password VARCHAR(32)," +
                    "nickname VARCHAR(32)," +
                    "age INT" +
                    ")";
            // 4. 执行SQL语句
            /*
                执行SQL语句的方法:
                DDL : execute(sql) 返回值是boolean--(CREATE,DROP)
                DML : executeUpdate(sql)--(INSERT,DELETE,Update)
                DQL : executeQuery(sql) -- SELECT
             */
            statement.execute(sql);
            // 5. 关闭连接
            connection.close();
            System.out.println("数据表创建成功");

        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
    }
}

3.2 JDBCDemo2
package jdbc;



import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

/**
 *  执行DML语句: executeUpdate(sql)方法
 *  需求: 在userinfo表中插入一条表记录 (insert)
 */
public class JDBCDemo2 {
    public static void main(String[] args) {

        try {
            // 1. 加载驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            // 2. 创建数据库连接对象
            Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/tedu?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true",
                    "root","root");
            // 3.创建执行SQL语句的对象 : Statement
            // 快捷键: connection.createStatement().var+回车 自从生成
            Statement statement = connection.createStatement();
//            String sql = "INSERT INTO userinfo(id, username, password, nickname, age) " +
//                    "VALUES (null,'赵丽颖','123456','花千骨',36);";

            // 需求: 让用户自己输入进行注册
            // 接收用户输入的信息
            Scanner scanner = new Scanner(System.in);
            System.out.println("欢迎注册");
            System.out.println("请输入用户名:");
            String username = scanner.nextLine();
            System.out.println("请输入密码");
            String password = scanner.nextLine();
            System.out.println("请输入昵称");
            String nickname = scanner.nextLine();
            System.out.println("请输入年龄");
            int age = scanner.nextInt();
            String sql = "INSERT INTO userinfo(id, username, password, nickname, age) " +
                    "VALUES (null,'"+username+"','"+password+"','"+nickname+"',"+age+")";

            // System.out.println(sql);
            // 4.执行sql语句
            // executeUpdate(sql) 返回值类型是整型,表示受影响的数据的条数
            // 0: 没有数据受影响
            // 非0: 返回的数据有 xxx 条受影响
            int num = statement.executeUpdate(sql);
//            // 5. 处理返回的结果
            if (num>0){
                System.out.println("注册成功");
            }else{
                System.out.println("注册失败");
            }
            // 6. 关闭连接
            connection.close();
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值