JDBC 连接数据库的步骤

本文介绍了JDBC连接数据库的详细步骤,包括加载驱动、获取连接、创建执行对象、执行SQL、处理结果及资源回收。强调了PreparedStatement在防止SQL注入上的优势,以及结果集处理中的next()方法和资源关闭的顺序。
部署运行你感兴趣的模型镜像

大家好,今天我和大家分享一下JDBC 连接数据库的步骤。

JDBC 连接数据库的步骤:

1、加载数据库驱动

2、获取数据库的连接

3、获取用于执行sql命令的执行对象

4、执行

5、处理结果

6、回收资源

1、加载数据库驱动:高版本兼容低版本(就是数据库驱动包是5.0版本可以用8.0的加载驱动)

注意:驱动的加载在JDBC4之后可以无需显示声明(可以不写),因为在META-INF下services包中有个配置文件java.sql.Driver。在获取连接之前,DriverManager会自动寻找。

//数据库驱动包是8.0版本
Class.forName("com.mysql.cj.jdbc.Driver");
//数据库驱动包是5.0版本
Class.forName("com.mysql.jdbc.Driver");

2、获取数据库的连接:getConnection()中的参数:url,user,password当然这个方法也有重载的其他方法,参数和这个相似。

Connection connection = DriverManager
    .getConnection(
            "jdbc:mysql://127.0.0.1:3306/mydb?serverTimezone=UTC",
            "root",
            "123456");

3、获取用于执行sql命令的执行对象:Statement一般用于执行静态sql语句。动态传入的参数时,使用Statement会有sql注入的风险,而PreparedStatement有预处理sql语句的功能可以避免sql注入的风险。

//有动态传入的参数时,不建议使用
Statement stat = conn.createStatement();
//有预处理sql语句的功能
String sql="select * from user where id=?";
PreparedStatement ps = conn.prepareStatement(sql);

4、执行:Statement中有execute()的方法,返回值是boolean类型,true表示执行查询操作,false表示执行更新操作(增删改)

executeUpdate()方法是执行更新操作(增删改),返回值是受影响的行数

executeQuery()方法是执行查询操作,返回值是一个结果集ResultSet

PreparedStatement和Statement方法一样(注意:PreparedStatement继承Statement)只不过在执行之前要为sql语句中的“?”赋值。

//对于Statement
boolean b = stat.execute("insert into user(username,password,phone) " +
        "values('coco','123456','12345678910')");
int i = stat.executeUpdate("insert into user(username,password,phone) " +
        "values('coco','123456','12345678910')");
ResultSet rs = stat.executeQuery("select * from user");
//对于PreparedStatement
String sql="select * from user where id=?";
String sql1="delete from user where id=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1,1);
boolean b1 = ps.execute();
//执行sql1时使用
int i1 = ps.executeUpdate();
//执行sql时使用
ResultSet rs1 = ps.executeQuery();

5、处理结果:主要是对于结果集的处理,ResultSet 中有next()方法,它相当于一个游标,它的指向是下一条数据,返回值是boolean类型,能判断有没有一条数据,而ResultSet 中的getXxx是用来获取每一条数据中的具体内容比如:username、password等

//处理execute()的结果
if(!b){
    System.out.println("添加成功");
}
//处理executeUpdate()的结果
if(i==1){
    System.out.println("添加成功");
}
//处理executeQuery()的结果:只有一条数据
if(rs1.next()){
    int id = rs.getInt("id");
    String username = rs.getString("username");
    String password = rs.getString("password");
    String phone = rs.getString("phone");
    System.out.println(id+"/"+username+"/"+password+"/"+phone);
}
//处理executeQuery()的结果:多条数据
while(rs1.next()){
    int id = rs.getInt("id");
    String username = rs.getString("username");
    String password = rs.getString("password");
    String phone = rs.getString("phone");
    System.out.println(id+"/"+username+"/"+password+"/"+phone);
}

6、回收资源:如果有结果集才能关闭结果集ResultSet,没有就不用写这一句。关闭资源类似递归和栈,就是开启顺序和关闭顺序相反。关闭资源时最好用try..finally...语句用try..catch....finally...语句。

//关闭结果集ResultSet
rs.close();
//关闭Statement
stat.close();
//关闭连接Connection
conn.close();

您可能感兴趣的与本文相关的镜像

Linly-Talker

Linly-Talker

AI应用

Linly-Talker是一款创新的数字人对话系统,它融合了最新的人工智能技术,包括大型语言模型(LLM)、自动语音识别(ASR)、文本到语音转换(TTS)和语音克隆技术

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值