!文章最后附有完整代码!
目录
🔖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