1.简介
实际开发中要绝大多数要通过代码来执行 sql 语句,这就需要让其他的编程语言来操作数据库服务器。
API 是什么意思:
例如 java 的标准库就会给我们提供一些 API,这个 API 中有一些随机数、scanner、集合类等。
mysql 也会提供这样的一组 API ,可以通过这组API来完成增删改查的操作~~
2.JDBC 的使用
2.1 先安装对应数据库的驱动包~~
要下载其中的 MySQL 驱动包,可以去官网下载也可以去 “中央仓库” 下载。
安装驱动包的网址:https://mvnrepository.com/
3、点进去往下滑动找到适合的版本(要和自己的数据库服务器对应)
安装完成。
2.2 把安装好的 jar 驱动包导入到项目中~~
2.2.1 在项目中创建目录,把 jar 包拷贝进来。
1、点击圈出的部分
6、将之前装好的 jar 包 ctrl c v 过来即可,会出现以下界面。
7、完成
2.2.2 右键创建的目录
1、点击圈出的
3.编写数据库代码插入一个记录
public class JdbcInsertDemo {
public static void main(String[] args) {
// 使用 jdbc 往数据库中插入一个记录
// 需要提前准备好数据库(java)和数据表(student)
// 1.创建数据源,描述了数据库服务器在哪
// 2.和数据库建立网络连接(写的 jdbc 代码本质上是一个 MySQL 客户端,要通过网络和服务器进行通信)
// 3.构造一个 sql 语句来完成 插入操作
// 4.执行 sql 语句(控制服务器给客户端发送请求)
// 5.断开与数据库的连接,并且释放必要的资源
}
}
需要注意的是,不同的数据库,对于数据源的描述是存在差异的。
有的数据库是通过用户名密码来认证,也有的不是,比如 SQLite
DataSource dataSource = new MysqlDataSource();
这相当于是 向上转型
创建数据源需要用到 DataSource 类,这个类的包是 javax.sql
这个包中放的就是一些与 jdbc 相关的类。
((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java?characterEncoding=utf8&useSSL=false");
URL 指的是唯一资源地址符,描述了互联网的唯一的一个资源的位置,也就是生活中所说的 “网址”。
jdbc:mysql://127.0.0.1:3306/java?characterEncoding=utf8&useSSL=false
- jdbc 表示的是 这个 url 是给 jdbc中的 mysql 来使用的
- 127.0.0.1 表示的是 数据库服务器所在的 IP 地址。
- 3306 表示的是 mysql 安装的时候配置的 端口号,一般默认是 3306。
- java 表示这是 访问的 数据库名。
- charactEncoding=utf8 表示 描述了 请求的字符编码方式,一般都是设置成 utf8。
- useSSL=false 表示 关闭加密功能。
((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("000000");
这里需要 注意 的是除了 数据库名 和 密码 不同的人操作的可能是不一样的。
其他的都是和我的一样的。
紧接着进行的 “连接操作” 才是真正的开始通过阅读进行通信。
Connection connection = dataSource.getConnection();
在提示的所有 Connection 中,选择下图中选择圈中的那一个。
下面就是会抛出的异常。
java 的异常,分为两类。
受查异常是 try 自己把这个异常捕获处理了。
throws 交给别人来处理。
这里main方法的 throws 意思是让 jvm 自己处理。
而 jvm 的处理方式很简单,就是直接摆烂。
下面的代码只是相当于描述了 sql 是什么样的,还没有真正的构造 sql 。
// 描述 sql 语句的
String sql = "insert into student values (1, '张三')";
// jdbc 还需要搭配一个特点的对象来描述这里的 sql 的情况
PreparedStatement preparedStatement = connection.prepareStatement(sql);//这一步才是真正的构造 sql
需要注意的是,每次指行 sql 语句的时候,都需要构造一下。
// 如果是增删改则是使用 executeUpdate()
// 如果是查则是使用 executeQuery()
// 返回结果的含义就是执行完 sql 语句后几行数据受到了影响
int ret = preparedStatement.executeUpdate();
System.out.println("ret = " + ret);
连接本质上就是找个地方记录一下 “和谁建立连接了”。
当连接不在需要的时候,就需要释放连接,把之前的记录给 “擦除掉”
preparedStatement.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;
public class JdbcInsertDemo {
public static void main(String[] args) throws SQLException {
// 使用 jdbc 往数据库中插入一个记录
// 需要提前准备好数据库(java)和数据表(student)
// 1.创建数据源,描述了数据库服务器在哪
DataSource dataSource = new MysqlDataSource();
// 设置数据库所在的位置,当前是固定写法
((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java?characterEncoding=utf8&useSSL=false");
((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("000000");
// 2.和数据库建立网络连接(写的 jdbc 代码本质上是一个 MySQL 客户端,要通过网络和服务器进行通信)
Connection connection = dataSource.getConnection();
// 3.构造一个 sql 语句来完成 插入操作
// 描述 sql 语句的
String sql = "insert into student values (1, '张三')";
// jdbc 还需要搭配一个特点的对象来描述这里的 sql 的情况
PreparedStatement statement = connection.prepareStatement(sql);//这一步才是真正的构造 sql
// 4.执行 sql 语句(控制服务器给客户端发送请求)
// 如果是增删改则是使用 executeUpdate()
// 如果是查则是使用 executeQuery()
// 返回结果的含义就是执行完 sql 语句后几行数据受到了影响
int ret = statement.executeUpdate();
System.out.println("ret = " + ret);
// 5.断开与数据库的连接,并且释放必要的资源
statement.close();
connection.close();
}
}
4.查看插入记录后的数据表
先来看一看数据表原来是什么样的。
再来看看现在的数据表。
虽然实现了插入,但是当前的代码不够灵活。
更多的时候,我们希望插入的数据是动态的。
所以可以使用 Scanner 来完成更加灵活的插入,即输入什么就插入什么。
方法是使用 PreparedStatement 来通过占位符的替换的方式,实现多态的 sql 构造。
下面代码就是对于上面代码修改过的部分
// 2.和数据库建立网络连接(写的 jdbc 代码本质上是一个 MySQL 客户端,要通过网络和服务器进行通信)
Connection connection = dataSource.getConnection();
Scanner input = new Scanner(System.in);
System.out.println("请输入学号:");
int id = input.nextInt();
System.out.println("请输入姓名:");
String name = input.next();
// 3.构造一个 sql 语句来完成 插入操作
// 描述 sql 语句的
String sql = "insert into student values (?, ?)";
// jdbc 还需要搭配一个特点的对象来描述这里的 sql 的情况
PreparedStatement statement = connection.prepareStatement(sql);//这一步才是真正的构造 sql
statement.setInt(1, id);
statement.setString(2, name);
System.out.println("sql:" + statement);
把 name 这个值以 String 的形式替换到第二个 ?里。
System.out.println("sql:" + statement);
下面执行代码观看结果,可以看到当前执行好的 sql 结果及受影响的数据行数。
下面查看数据表。
发现数据成功插入。
5.如何编写代码实现查找操作
前面的步骤和 增删改 类似,只是改造的 sql 语句不一样。
// 1.创建数据源,描述了数据库服务器在哪
DataSource dataSource = new MysqlDataSource();
// 设置数据库所在的位置,当前是固定写法
((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java?characterEncoding=utf8&useSSL=false");
((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("000000");
// 2.和数据库建立网络连接(写的 jdbc 代码本质上是一个 MySQL 客户端,要通过网络和服务器进行通信)
Connection connection = dataSource.getConnection();
// 3.构造一个 sql 语句来完成 插入操作
// 描述 sql 语句
String sql = "select * from student";
//这一步才是真正的构造 sql
PreparedStatement statement = connection.prepareStatement(sql);
select * from student
这是一条查询数据表的 sql 语句,其他都是和增删改一样的。
下面的代码就是查询操作有改动的代码。
//结果集合
// 查询使用executeQuery
ResultSet resultSet = statement.executeQuery();
//拿到每一行 - next 相当于是使光标移动到下一行
while (resultSet.next()) {
// 使用getXX 的方式得到每一列
// 如果是int就是 getInt,如果是String,就是getString...
// 这里的参数就是数据表的列名
int id = resultSet.getInt("id"); // 代码的作用是得到 id 这一列的值
String name = resultSet.getString("name"); // 代码的作用是得到 name 这一列的值
//输出查询的结果
System.out.println(id + ":" + name);
}
最终会是下面的状况。
下面代码的作用是取到这一列具体的值,数据表有几列的数据就写几条语句。
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
// 释放资源 - 释放顺序和创建顺序相反
resultSet.close();
statement.close();
connection.close();
下面访问数据表看看数据是什么样。
运行代码观察结果
如果是 加限制条件 的查询,只需要把 sql 语句改了即可。
此时需要将 sql 改为 select * from student where id = 1
运行代码会输出一下结果,同时也可以发现和数据库显示的结果相同。
原文地址:https://blog.csdn.net/m0_63033419/article/details/127888909
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_13033.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!