CSDN话题挑战赛第2期 参赛话题:学习笔记
JDBC专栏
【1】idea添加mysql-jar包 【2】使用IDEA连接数据库,执行增删改操作。 【3】IDEA连接数据库,执行查询操作,返回结果集并输出。
连接数据库,执行更新
- JDBC专栏
- 前言
- 一、连接数据库
- 1.加载驱动
- 2.通过驱动管理器连接对象
- 二、执行更新
- 1.编写SQL语句
- 2.创建预处理命令对象PreparedStatement()
- 3.填充内容参数
- 4.执行更新executeUpdate(),关闭资源close()
- 三、执行,检查
- 乱码
前言
JDBC是一个Java与数据库通信的规范(接口),各大数据库厂商会去实现JDBC规范(实现类),而上一篇文章提到的jar 包
就是包含各种实现类的压缩包。
这篇文章,我将介绍如何尝试利用JDBC规范来连接数据库,对数据库进行更新操作。
一、连接数据库
1.加载驱动
代码语言:javascript复制 Class.forName("com.mysql.jdbc.Driver");
com.mysql.jdbc.Driver:是JDBC驱动程序,是用于实现JDBC接口的一组Java类
2.通过驱动管理器连接对象
在这一步,我们需要准备三样东西 URL
,账户用户名
,密码
URL:表示跟数据库通信的地址。
用户名:自然就是拥有数据库权限的账户了,这里使用根用户root
。
密码:登录数据库需要用户名及对应的密码。
图片是MySQL数据库的登录界面,正需要用户名与密码
使用JDBC连接数据库相比直接在数据库应用上连接,需要额外确定需要建立通信的数据库的地址,这样才能建立连接。
准备URL:
代码语言:javascript复制String url = "jdbc:mysql://localhost:3306/fruitdb";
jdbc:mysql:// 是通信地址的固定开头格式 localhost:3306/ 代表本地连接,3306则是MySQL数据库的默认端口号 后面的就是我创建的其中一个DataBase名称
准备用户名与密码:
代码语言:javascript复制 String user = "root";//用户名为root
String psw = ""; //password填写对应用户的密码即可
使用数据库管理器连接:
代码语言:javascript复制Connection conn = DriverManager.getConnection(url, user, psw);
整合:
代码语言:javascript复制import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
/**
* @author .29.
* @create 2022-09-15 21:49
*/
public class Demo02 {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/fruitdb";
String user = "root";
String psw = ""
Connection connection = Connection conn = DriverManager.getConnection(url, user, psw);
}
}
二、执行更新
1.编写SQL语句
在编写SQL语句之前,我们先来了解一下,URL地址中数据库的内容:
以下是数据库中的操作:
USE fruitdb;
SELECT * FROM t_fruit;
这就是Database:fruitdb
中表t_fruit
的内容。
接下来就是在IDEA中编写SQL语句,对表进行更新操作了。
代码语言:javascript复制String sql = "insert into t_fruit values(9,?,?,?,?)";
values()中的 ?代表还未指定内容
insert into t_fruit values(…)是添加操作; 还可以使用其他的SQL语言: 如: 更新:update t_fruit set price = 100 where fname = ‘榴莲’ 删除:delete from t_fruit where fid = 8 等…
2.创建预处理命令对象PreparedStatement()
代码语言:javascript复制PreparedStatement psmt = connection.prepareStatement(sql);
3.填充内容参数
上文的SQL语句中,我们用 ?替代了参数,这里进行内容的填充:(下标 ,内容)
代码语言:javascript复制 psmt.setString(1,"石榴");
psmt.setInt(2,8);
psmt.setInt(3,64);
psmt.setString(4,"石榴,在广东也可以叫鸡屎果");
4.执行更新executeUpdate(),关闭资源close()
代码语言:javascript复制 //执行更新,返回影响行数i
int i = psmt.executeUpdate();
//i > 0说明影响行数大于一,即更新成功
System.out.println(i > 0 ? "添加成功":"添加失败");
//关闭资源
psmt.close();
connection.close();
关闭资源时,先关闭预处理对象psmt(PreparedStatement),再关闭连接(connection)。
三、执行,检查
完整代码:
代码语言:javascript复制import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
/**
* @author .29.
* @create 2022-09-15 21:49
*/
public class Demo02 {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/fruitdb";
String user = "root";
String psw = ""
Connection connection = Connection conn = DriverManager.getConnection(url, user, psw);
//id,fname,price,fcount,remark
String sql = "insert into t_fruit values(9,?,?,?,?)";
//4.创建预处理命令对象
PreparedStatement psmt = connection.prepareStatement(sql);
//5.填充参数
psmt.setString(1,"石榴");
psmt.setInt(2,8);
psmt.setInt(3,64);
psmt.setString(4,"石榴,在广东也可以叫鸡屎果");
//6.执行更新(增删改),返回影响行数
int i = psmt.executeUpdate();
System.out.println(i > 0 ? "添加成功":"添加失败");
//7.释放资源(关闭连接,先关闭psmt,再关闭connection)
psmt.close();
connection.close();
}
}
执行结果:
让我们检查一下数据库:
结果确实是添加成功了。
乱码
如果遇到乱码,通常都是字符集的设置问题,可以尝试在URL地址中设置使用的字符集:
?useUnicode=true&characterEncoding=utf-8
//通过驱动管理器连接对象
//url表示跟数据库通信的地址
//如果url中需要带参数,使用?连接
//如果需要带多个参数,第二个参数开始用&连接
String url = "jdbc:mysql://localhost:3306/fruitdb?useUnicode=true&characterEncoding=utf-8";
String user = "root";
String psw = ""
Connection connection = Connection conn = DriverManager.getConnection(url, user, psw);