MySQL4——JDBC编程

目录

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

二:Java的数据库编程:JDBC

 三:JDBC开发实例

        1.JDBCInsert

    1.使用DataSource描述MySQL服务器的位置

    2. 创建数据库连接Connection

    3. 创建操作命令Statement并使用操作命令来执行SQL

    4. 执行SQL语句

    5. 释放资源

        2.JDBCUpadte

        3.JDBCDelete

        4.JDBCSelect


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

1.编程语言,如Java,C、C++、Python等;

2.数据库,如Oracle,MySQL,SQL Server等;

3.数据库驱动包:不同的数据库,对应不同的编程语言提供了不同的数据库驱动包,如:MySQL提供了Java的驱动包mysql-connector-java,需要基于Java操作MySQL即需要该驱动包。同样的,
要基于Java操作Oracle数据库则需要Oracle的数据库驱动包ojdbc。

二:Java的数据库编程:JDBC

        JDBC,即Java Database Connectivity,java数据库连接。是一种用于执行SQL语句的Java API,它是Java中的数据库连接规范。这个API由java.sql.*,javax.sql.* 包中的一些类和接口组成,它为Java开发人员操作数据库提供了一个标准的API,可以为多种关系数据库提供统一访问。

        Java提出了一套“标准”的接口体系,让这些数据库厂商提供的API都往java这套接口体系中进行适配。程序猿只需要掌握java这一套API即可适应所有常见的主流的数据库了 。java提供的这套操作数据库的API,就称为JDBC。

        各个数据库厂商为了能够适配JDBC,因此需要写一些额外的程序来完成这个工作,厂商提供的这套额外的程序,称为“JDBC驱动包”。使用java操作各种数据库,就需要安装对应数据库提供的驱动包,才能真正进行使用~~

        首先需要有驱动包!

        去哪里找驱动包呢?

1.MySQL官网~(Oracle 收购)不好找~~

2.中央仓库~驱动包也是一种"第三方库".第三方库有很多.就有大佬,把各种第三方库收集起来,放到一个统一的网站上。

 

 

 

如何把jar包导入到java文件中?

 1.新建一个目录;

2.直接把下载好的jar包复制粘贴到这个目录下;

 3.设置这个目录,让这个目录能够被项目识别;

 三:JDBC开发实例

主要介绍对数据库的增删改查操作。

1.JDBCInsert

进行JDBC编程,有一套较为固定的流程,依次是:

1.使用DataSource描述MySQL服务器的位置

2. 创建数据库连接Connection
3. 创建操作命令Statement并使用操作命令来执行SQL
4. 执行SQL语句
5. 释放资源

1.使用DataSource描述MySQL服务器的位置

//        1.使用DataSource描述MySQL服务器的位置
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/test1?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("111111");

去相亲 , 就要先赶往约定的地点 ; 要想赶到约定的地点 , 就要先明确地点在哪里 . 要操作数据库 , 就得连接上数据库服务器 , 要想连接上数据库服务器 , 就得描述清楚服务器所在的位置 . 在JDBC中 , 使用DataSource这类来描述数据库的位置 .

         虽然两种写法没啥区别.但是实际开发中可能还是更多的看到第一种写法!!第一种写法里,得到的数据源是 DataSource类型.后续写其他代码,方法/类,如果使用到数据源,持有的类型也是 DataSource类型~ DataSource是通用的类型,可以代指任何数据库.未来一旦需要更换数据库~代码改动是非常小的~~只需要把实例化这一小块代码改了即可,其他代码都不用变~~

        第二种写法,得到的数据源是MysqIDataSource类型.后续的其他代码,方法/类,如果用到数据源,持有的类型也就是MysqIDataSource , MysqlDataSource只是针对MySQL的类型 . 未来一旦更换数据库,可能就需要把散落在代码各个地方的 MysqlDataSource类型进行修改.

 2. 创建数据库连接Connection

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

 

3. 创建操作命令Statement并使用操作命令来执行SQL

//        3.构造SQL语句,JDBC操作数据库,本质任然是通过SQL来描述数据库操作~~
//        不能直接使用String类型的SQL,还需要搭配·一个特殊的类
        Scanner scanner  = new Scanner(System.in);
        System.out.println("请输入学号:");
        int num = scanner.nextInt();
        System.out.println("请输入姓名:");
        String name = scanner.next();
        //使用?作为占位符,后续用statement对象针对?进行替换。
        String sql = "insert into student values(?,?)";
        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setInt(1,num);
        statement.setString(2,name);
        System.out.println(statement);

4. 执行SQL语句

//        4.执行SQL语句,insert,update,delete都是通过executeUpdate来执行的。
//        select则是通过executeQuery来执行的。
        int n = statement.executeUpdate();
        System.out.println("n = "+n);

executeUpdate的返回值是一个整数,表示这个操作影响到几行。

5. 释放资源

//        5.断开连接,释放资源
        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.SQLException;
import java.util.Scanner;

public class JDBCInsert {
    public static void main(String[] args) throws SQLException {

//        1.使用DataSource描述MySQL服务器的位置
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/test1?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("111111");

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

//        3.构造SQL语句,JDBC操作数据库,本质任然是通过SQL来描述数据库操作~~
//        不能直接使用String类型的SQL,还需要搭配·一个特殊的类
        Scanner scanner  = new Scanner(System.in);
        System.out.println("请输入学号:");
        int num = scanner.nextInt();
        System.out.println("请输入姓名:");
        String name = scanner.next();
        //使用?作为占位符,后续用statement对象针对?进行替换。
        String sql = "insert into student values(?,?)";
        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setInt(1,num);
        statement.setString(2,name);
        System.out.println(statement);

//        4.执行SQL语句,insert,update,delete都是通过executeUpdate来执行的。
//        select则是通过executeQuery来执行的。
        int n = statement.executeUpdate();
        System.out.println("n = "+n);
//        executeUpdate的返回值是一个整数,表示这个操作影响到几行

//        5.断开连接,释放资源
        statement.close();
        connection.close();

    }
}

执行上述代码并查看studnet表中的内容:

2.JDBCUpadte

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import org.omg.CORBA.SetOverrideType;

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

public class JDBCUpdate {
    public static void main(String[] args) throws SQLException {
//        1.构造数据源
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/test1?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("111111");
//        2.和数据库建立连接
        Connection connection = dataSource.getConnection();
//        3.用户输入要修改的id和修改后的名字
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你要修改的学生的学号:");
        int id = scanner.nextInt();
        System.out.println("请输入你要修改后的学生姓名:");
        String name = scanner.next();
        // next 读到空白符(空格, 制表符, 翻页符, 换行符, 回车符, 垂直制表符.....)
        // nextLine 读到换行符

//        4.构造SQL语句
        String sql = "update student set name = ? where id = ?";
        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setString(1,name);
        statement.setInt(2,id);
        System.out.println(statement);

//        5.执行SQL
    int n = statement.executeUpdate();
        System.out.println("n = "+n);

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

 

3.JDBCDelete

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 JDBCDelete {
    public static void main(String[] args) throws SQLException {
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/test1?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("111111");

        Connection connection = dataSource.getConnection();

        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你要删除的学生id:");
        int id = scanner.nextInt();

        String sql = "delete from student where id = ?";
        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setInt(1,id);

        int n =statement.executeUpdate();
        System.out.println("n= "+n);

        statement.close();
        connection.close();
    }
}

4.JDBCSelect

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 {
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/test1?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("111111");

        Connection connection = dataSource.getConnection();

        String sql = "select * from student";
        PreparedStatement statement = connection.prepareStatement(sql);
        //executeQuery返回的是一个Result对象,可以把这个对象视为是一个临时表
        ResultSet resultSet = statement.executeQuery();

        //遍历临时表,拿到里面的数据
        while(resultSet.next()) {
            int id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            System.out.println(id + "," + name);
        }

            resultSet.close();
            statement.close();
            connection.close();
        }
    }

为了进行测试,我先向student数据表中插入了一些数据。

 注意:

1.DataSource内置了数据库连接池 , 可能会复用之前的连接 . 

 2.


总结:

整个数据库的课程中~~

1.SQL语句[重点];
⒉数据库的工作原理(相对少,客户端服务器结构,执行SQL过程,索引,事务(相关面试题));
3.JDBC编程

        数据库这里的水其实挺深的.如果要能研发出一个数据库,需要掌握的东西还有很多很多~~


        本系列内容到此结束!
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值