2.20jdbc

一.数据库编程的必备条件

  • 编程语言:java c c++ Python

  • 数据库 Oracle,MySQL,SQL Server

  • 数据库驱动包:不同的数据库,对应不同的编程语言提供了不同的数据库驱动包:MySQL提供了Java的驱动包

mysql=connector-java,需要就Java操作MySQL需要该驱动包

二.Java的数据库编程

JDBC,即Java Database Connectivity,java数据库连接。是一种用于执行SQL语句的Java API,它是

Java中的数据库连接规范。这个API由 java.sql.,javax.sql. 包中的一些类和接口组成,它为Java

开发人员操作数据库提供了一个标准的API,可以为多种关系数据库提供统一访问。

三.jdbc工作原理

JDBC 为多种关系数据库提供了统一访问方式,作为特定厂商数据库访问API的一种高级抽象,它主要包

含一些通用的接口类。

JDBC优势:

  • Java语言访问数据库操作完全面向抽象接口编程

  • 开发数据库应用不用限定在特定数据库厂商的API

  • 程序的可移植性大大增强

MySQL是一个-服务器结构的程序

四.JDBC编程

1.创建项目

2.引入依赖

JDBC编程需要用到MySQL的驱动包

驱动包就是将mysql本身的API给转化成jdbc风格的

1)下载驱动包

去maven中央仓库去下载

https://mvnrepository.com/

2)导入到项目中

a)创建个目录,随便取名字

b)把刚才下载的jar文件拷贝到刚才的目录

c)右键刚刚的目录,有一个选项,佳作add as library

3)编写代码

1.创建DataSource对象,这个对象就描述了数据库服务器在哪里

父类引用指向子类实例

URL:Uniform Resource Locator

唯一资源定位符

2.建立连接

3操作数据库(插入)-构造语句

4.执行sql

5.释放资源

释放资源的时候先释放statement,再释放connection

先创建的后释放

4)总结

(42条消息) 如何查看MySQL的端口号?_安西宁的博客-CSDN博客_mysql8 查看端口

五.灵活处理插入删除数据

0.以前的方法

1.使用户输入

2.将id和name替换到insert语句对应的位置上

方法1,用字符串的拼接

方法2:替代写法

3.进行替换操作

4.打印拼接好的sql

六.注意事项

1.无法用idea连接

2.连接池

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;

public class JDBC {
    public static void main(String[] args) throws SQLException {
        Scanner scanner = new Scanner(System.in);

        // 1. 创建好数据源
        DataSource dataSource = new MysqlDataSource();
        // 设置数据库所在的地址
        ((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java102?characterEncoding=utf8&useSSL=false");
        // 设置登录数据库的用户名
        ((MysqlDataSource) dataSource).setUser("root");
        // 这个是设置登录数据库的密码
        ((MysqlDataSource) dataSource).setPassword("2222");

        // 2. 让代码和数据库服务器建立连接~~ 相当于到达了菜鸟驿站
        Connection connection = dataSource.getConnection();

        // 2.5 让用户通过控制台输入一下待插入的数据.
        System.out.println("请输入学号: ");
        int id = scanner.nextInt();
        System.out.println("请输入姓名: ");
        String name = scanner.next();

        // 3. 操作数据库. 以插入数据为例.
        //    关键所在就是构造一个 SQL 语句~
        //    在 JDBC 中构造的 SQL, 不必带上 ;
        //    ; 只是在命令行中用来区分不同的语句. 现在是直接在代码中操作~~
        String sql = "insert into student values(?, ?)";
        // 此处光是一个 String 类型的 sql 还不行, 需要把这个 String 包装成一个 "语句对象"
        PreparedStatement statement = connection.prepareStatement(sql);
        // 进行替换操作.
        statement.setInt(1, id);
        statement.setString(2, name);
        System.out.println("statement: " + statement);

        // 4. 执行 SQL , 相当于扫码取件
        //    SQL 里面如果是 insert, update, delete, 都使用 executeUpdate 方法.
        //    SQL 里面如果是 select, 则使用 executeQuery 方法.
        //    返回值就表示这个操作, 影响到了 几行. 就相当于在控制台里输入 sql 之后, 得到的数字~
        int ret = statement.executeUpdate();
        System.out.println(ret);

        // 5. 此时 SQL 已经执行完毕. 然后还需要释放资源.
        statement.close();
        connection.close();
    }
}

七 .查找操作

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class JDBCSelect {
    public static void main(String[] args) throws SQLException {
        // 查找数据库中的记录
        // 这个查找和前面的操作就不太一样了~~ 多了一个步骤, 要遍历结果集合~

        // 1. 创建数据源
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java104?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("2222");

        // 2. 和数据库服务器建立连接
        Connection connection = dataSource.getConnection();

        // 3. (此处不输入条件了, 直接查找所有记录)

        // 4. 构造 SQL
        String sql = "select * from student";
        PreparedStatement statement = connection.prepareStatement(sql);

        // 5. 执行 SQL.
        //    此处要使用的是 executeQuery.
        //    executeUpdate 只能返回一个 int.
        //    executeQuery 返回的是一个 ResultSet 对象. 可以把这个对象视为是一个 "临时表"
        ResultSet resultSet = statement.executeQuery();

        // 6. 遍历临时表, 拿到里面的数据.
        //    resultSet 简单的当成一个类似于 "迭代器" 这样的东西来看待~
        //    next 如果没有到达末尾, 就是返回 true, 要继续循环.
        //    next 如果到达末尾, 就返回 false, 结束循环.
        while (resultSet.next()) {
            // 在这里就可以取这一行的数据了.
            // 通过 ResultSet 里面的 getXXX 方法, 来获取到这里指定的列.

            // 取 id, id 是整数, getInt
            int id = resultSet.getInt("id");
            // 取 name, name 是 String, getString
            String name = resultSet.getString("name");
            System.out.println(id + ": " + name);
        }

        // 7. 关闭连接, 释放资源
        resultSet.close();
        statement.close();
        connection.close();
    }
}

八.workbench

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值