Java环境下的JDBC编程

JDBC编程优点:可以重复执行固定操作

使用JDBC必备条件

1.编程语言:Java

2.数据库:MySQL

3.数据库驱动包:mysql-connector-Java

驱动包链接: https://downloads.mysql.com/archives/c-j/ 驱动包安装步骤:

1.选择自己需要下载的版本(一般下载与自己电脑的MySQL版本相近的)

java 打印机驱动 java编写驱动_mysql


2.新建一个项目

java 打印机驱动 java编写驱动_java_02


3.新建一个lib目录:

项目名称处右键选择新建

java 打印机驱动 java编写驱动_sql_03


4.将数据库驱动包复制到根目录下:

红色框框的jar包为粘贴上的5.粘贴成功后右键点击jar包选择Add and Library自动出现以下文件夹,如出现则表示导入成功

java 打印机驱动 java编写驱动_mysql_04


6.导入成功后则可直接在src中新建Java程序连接数据库了

JDBC编码步骤

1.准备一个数据库表:

如图所示此次示例用的数据库名为db_221117,新建了一个表名字为student

java 打印机驱动 java编写驱动_java_05

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.sql.SQLOutput;

public class JDBC测试1 {
    public static void main(String[] args) throws SQLException {
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/db_221117?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("123456");
        Connection connection = dataSource.getConnection();
        String sql = "insert into student values (1,'张三')";
        PreparedStatement statement = connection.prepareStatement(sql);
        int ret = statement.executeUpdate();
        System.out.println("ret = " + ret);
        statement.close();
        connection.close();
    }

}

执行结果:

java 打印机驱动 java编写驱动_java 打印机驱动_06

上述代码详解:

1.URL:

URL:是统一资源定位符, 互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它
一般使用MySQL的URL都为:(数据库名字需改变)若报异常则在后面拼上&serverTimezone=UTC

jdbc:mysql://127.0.0.1:3306/MySQL?characterEncoding=utf8&useSSL=false
//加上时区版(东八区为例):
jdbc:mysql://127.0.0.1:3306/MySQL?characterEncoding=utf8&useSSL=false&serverTimezone=UTC

java 打印机驱动 java编写驱动_数据库_07—是指JDBC连接方式
java 打印机驱动 java编写驱动_java_08—是指你的本机地址;
java 打印机驱动 java编写驱动_数据库_09—SQL数据库的端口号,若安装数据库时没更改一般都为3306;
java 打印机驱动 java编写驱动_java 打印机驱动_10—进行操作的数据库名字
java 打印机驱动 java编写驱动_mysql_11—描述请求字符编码方式,一般写为utf8
java 打印机驱动 java编写驱动_mysql_12—关闭加密功能

2.创建DataSource
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/db_221117?characterEncoding=utf8&useSSL=false");
((MysqlDataSource)dataSource).setUser("root");//用户名
((MysqlDataSource)dataSource).setPassword("123456");//密码
3.和数据库建立连接
Connection connection = dataSource.getConnection();
//连接

此处可能抛出异常,可直接在main后加入throws语句让JVM自行处理此异常

java 打印机驱动 java编写驱动_数据库_13

此处选择后缀为 Java.sql的

java 打印机驱动 java编写驱动_数据库_14

4.构造SQL语句:
String sql = "insert into student values (1,'张三')";
//sql  用来描述sql语句是啥样的,具体执行需要靠后面
PreparedStatement statement = connection.prepareStatement(sql);
//PreparedStatement   与处理过的语句,每执行一次sql语句都需要重新构造一下
//statement 接口提供三种执行SQL语句的方法
5.执行语句

增删改使用:executeUpdate();来执行
查找使用:executeQuery();来执行

int ret = statement.executeUpdate();
//ret  用来记录此次操作影响了几行
System.out.println("ret = " + ret);
6.断开连接,释放资源

先创建先释放

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

3.从键盘读取数据进行操作

还是对同一个数据库操作

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.sql.SQLOutput;
import java.util.Scanner;

public class JDBC测试1 {
    public static void main(String[] args) throws SQLException {
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/db_221117?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("123456");
        Connection connection = dataSource.getConnection();
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入学号:");
        int id = scanner.nextInt();
        System.out.println("请输入姓名:");
        String name = scanner.next();
        String sql = "insert into student values(?,?)";
        //占位符: 一个?代表一个变量
        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setInt(1,id);
        statement.setString(2,name);
        //1和2分别表示此处为第一个?和第二个?
        System.out.println("sql:  "+statement);
        int ret = statement.executeUpdate();
        System.out.println("ret = " + ret);
        statement.close();
        connection.close();
    }

}

这里将操作改为从键盘输入信息插入到student表中

java 打印机驱动 java编写驱动_数据库_15


运行结果:

java 打印机驱动 java编写驱动_mysql_16

4.简单的查找操作

查询student表(无限制条件)

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

import javax.sql.DataSource;
import javax.xml.transform.Result;
import java.sql.*;
import java.util.Scanner;

public class JDBC测试2 {
    public static void main(String[] args) throws SQLException {
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/db_221117?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("123456");
        Connection connection = dataSource.getConnection();
        String sql = "select * from student ";
        //SQL查询语句
        
        PreparedStatement statement = connection.prepareStatement(sql);
        //statement 接口提供三种执行SQL语句的方法
        
        ResultSet resultSet = statement.executeQuery();
        //执行了SQL语句
        //ResultSet结果集:数据查询结果返回的一种对象
        
        while (resultSet.next()) {
        //resultSet.next()读取下一行,若不为空则继续
        //第一次执行resultSet.next()后,此时光标指在表的第一行
            int id = resultSet.getInt("id");
            //获取读的结果
            String name = resultSet.getString("name");
            System.out.println(id + ": " + name);
        }
        System.out.println("sql:  "+statement);
        resultSet.close();
        statement.close();
        connection.close();
    }

}

运行结果:

java 打印机驱动 java编写驱动_java_17

若将String sql = "select * from student ";变成:String sql = "select * from student where id = 3"; 结果:

java 打印机驱动 java编写驱动_sql_18


无论是如何查询都只用改变sql即可