JDBC概述
JDBC----->Java DataBase Connectivity java数据库连接
JDBC是Java制定的一套用于如何连接数据库的API,可以支持连接多种数据库
Java可以连接不同的数据库,每种数据库的连接方式都一样。如果不一样,就需要学习多套,很麻烦,所以Java只定义了一套标准(抽象类/接口),具体连接数据的实现,让数据库开发商自己实现,实现必须遵守Java制定的规范,程序员学习使用标准规范
程序员只需要编写一次,就可以访问不同的数据库
JDBC API:供程序员调用的接口与类,集成在java.sql包中
DriverManager类作用:管理各种不同的JDBC驱动
Connection接口:与特定数据库的连接
Statement接口 :执行sql
PreparedStatement接口:执行sql
ResultSet接口:接收查询结果
JDBC搭建
注册JDBC驱动程序
需要初始化驱动程序:
Class.forName("com.mysql.cj.jdbc.Driver");//反射实现
new Driver();
建立与数据库连接:
Connection connection = DriverManager.getConnection(url,user,password);
URL:jdbc:mysql://ip(127.0.0.1):端口(3306)/数据库名?serverTimezone=Asia/Shanghai
USER:用户名(root) PASS:密码
获得Statement执行sql语句
Statement st = connection.createStatement();
Statement中的方法:
Int executeUpdate(String sql) 用于执行ddl语句和dml(增,删,改)语句 返回操作的行数
ResultSet executeQuery(String sql); 用于执行查询语句,返回一个ResultSet 集合
获得PreparedStatement执行sql语句
PreparedStatement ps = connection.prepareStatement(String sql)
PrepareStatement中的方法:
Int executeUpdate() 用于执行ddl语句和dml(增,删,改)语句 返回操作的行数
ResultSet executeQuery(); 用于执行查询语句 返回一个ResultSet 集合
关闭与数据库的连接通道
st.close;
rs.close;
connection.close;
ps.close;
PreparedStatement和Statement
区别:
1.代码的可读性和可维护性
2.极大的提高了安全性,防止sql注入
Stringsql=“ delete from user where id =”+num;
如果我们把[or 1=1]作为id传入进来?
delete from tb_name where id = 1 or 1 = 1;
因为‘1’=‘1’肯定成立
而如果你使用预编译语句,你传入的任何内容就不会和原来的语句发生任何匹配的关系
预编译模式中每个占位符处,只能插入一个值,而会过滤其它语句
结果集处理
PreparedStatement和Statement中的executeQuery()方法中会返回一个ResultSet对象,查询结果就封装在此对象中
使用ResultSet中的next()方法获得下一行数据
使用getXXX(String name)方法获得值