!文章最后附有完整代码!
目录
🔖JDBC概述
🔖JDBC连接数据库
🔖添加数据(insert)
🔖修改数据(Update)
🔖删除数据(delete)
🔖查询数据(Select)
🔖关闭与数据库的链接通道
💡PreparedStatement和Statement 区别
🔖JDBC概述
⦁ JDBC全称Java DataBase Connection 即Java数据库连接
⦁ Java程序可以连接不同的数据库,但是,不同的数据库具体的连接细节有些不同,所以连接数据库的细节就需要由数据库的开发商去实现,而Java开发商只需设计出一系列连接数据库的接口规范即可,然后由不同的数据库开发商去实现。
//Java中提供一个连接数据库的接口规范
interface oper{
insert();
delete();
select();
update();
}
//oracle可以实现Java中提供的接口
oracle implements oper{
insert(){ }//在此接口中定义自己的功能
delete(){ }
select(){ }
update(){ }
}
//mysql也可以实现Java中提供的接口
mysql implements oper{
insert(){ }//定义属于mysql的功能
delete(){ }
select(){ }
update(){ }
}
🔖JDBC连接数据库
① 在项目添加 mysql-connector-java-8.0.16.jar 文件
该文件是由mysql官方开发实现的,包含具体连接数据库的功能代码
② 加载驱动类 Class.forName("com.mysql.cj.jdbc.Driver");
//加载驱动类
Class.forName("com.mysql.cj.jdbc.Driver");
③ 建立与数据库的连接,获得连接对象
//加载驱动类
Class.forName("com.mysql.cj.jdbc.Driver");
//建立与数据库的连接,获得连接对象
String url="jdbc:mysql://127.0.0.1:3306/test?serverTimezone=Asia/Shanghai";
String user ="root";//账户
String dbpassword="root";//密码
Connection connection = DriverManager.getConnection(url, user, dbpassword);
🎉 就此,Java程序与数据库的连接就完成了,而我们所要连接的数据库名写在如下图的地方
< 例如我连接的就是我的 test数据库 >
🔖添加数据(insert)
// //预先编译sql语句
PreparedStatement ps = connection.prepareStatement("insert into score (id,name,subject,score)values (?,?,?,?)");
ps.setObject(1,1 );
ps.setObject(2, "小李");
ps.setObject(3, "数学");
ps.setObject(4, 88);
ps.executeUpdate(); //用于执行查询语句 返回一个集合
💡添加数据成功!
?占位符,表示此处需要接收一个参数
🔖修改数据(Update)
PreparedStatement ps = connection.prepareStatement("update score set score=? where id=?");
ps.setObject(1, 95);
ps.setObject(2, 1);
ps.executeUpdate();
💡修改数据成功!
🔖删除数据(delete)
PreparedStatement ps = connection.prepareStatement("delete from score where id=?");
ps.setObject(1,1);
ps.executeUpdate();
💡删除数据成功!
🔖查询数据(Select)
PreparedStatement ps =connection.prepareStatement("Select name,subject,score from score where id=?");
ps.setObject(1, 2);
ResultSet rs = ps.executeQuery();
while (rs.next()){
System.out.println( rs.getString("name"));
System.out.println(rs.getString("subject"));
System.out.println(rs.getString("score"));
}
💡查询结果:
🔖关闭与数据库的链接通道
//关闭数据库连接
ps.close();
connection.close();
💡PreparedStatement和Statement 区别
相同点: 都是向数据库发送sql
Statement: 将参数直接拼接到sql中,要拼接字符串,写起来麻烦,,安全性差,可以在参数中拼接 or 1=1进行攻击,删除表中所有数据
PreparedStatement : 先用 ?占位,然后通过setObject方法赋值,,写起来不用拼接字符串,,安全可靠,并且会在赋值时进行检测,可以防止sql注入攻击。
完整代码:
package chatproject;
import java.sql.*;
public class Demo {
public static void main(String[] args) {
try {
//加载驱动类
Class.forName("com.mysql.cj.jdbc.Driver");
//建立与数据库的连接,获得连接对象
String url="jdbc:mysql://127.0.0.1:3306/test?serverTimezone=Asia/Shanghai";
String user ="root";
String dbpassword="root";
Connection connection = DriverManager.getConnection(url, user, dbpassword);
//发送sql
//插入数据
/*PreparedStatement ps = connection.prepareStatement("insert into score (id,name,subject,score)values (?,?,?,?)");
ps.setObject(1,1 );
ps.setObject(2, "小李");
ps.setObject(3, "数学");
ps.setObject(4, 88);
ps.executeUpdate(); //用于执行查询语句 返回一个集合*/
//修改数据
/* PreparedStatement ps = connection.prepareStatement("update score set score=? where id=?");
ps.setObject(1, 95);
ps.setObject(2, 1);
ps.executeUpdate();*/
//删除数据
/* PreparedStatement ps = connection.prepareStatement("delete from score where id=?");
ps.setObject(1,1);
ps.executeUpdate();*/
//查询数据
PreparedStatement ps =connection.prepareStatement("Select name,subject,score from score where id=?");
ps.setObject(1, 2);
ResultSet rs = ps.executeQuery();
while (rs.next()){
System.out.println( rs.getString("name"));
System.out.println(rs.getString("subject"));
System.out.println(rs.getString("score"));
}
//关闭数据库连接
ps.close();
connection.close();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
}
▐ 结语:
希望这篇关于Java数据库连接方式的介绍能对大家有所帮助,欢迎大佬们留言或私信与我交流~~学海漫浩浩,我亦苦作舟!大家一起学习,一起进步!
本人微信: g2279605572