JDBC
JDBC概述
- Java连接数据库
- java来处理数据的,连接到数据库 将数据发送到数据执行保存
- JDBC是java连接数据的一种规范
- java程序需要连接不同的数据库,不同的数据库实现的细节不同
JDBC搭建
- 导入mysql开发商提供的连接mysql数据库的驱动包 60多个 100个
- 加载mysql驱动类
- 建立与数据库的连接通道
- 向数据库发送sql
- 关闭与数据库连接通道
java语言开发者制定了一套(接口),具体的实现交给不同的数据库开发商来实现
-
注册JDBC驱动程序:
-
这需要初始化驱动程序,这样就可以打开与数据库的通信信道。
Class.forName(“com.mysql.cj.jdbc.Driver”); //反射实现或者
DriverManager.registerDriver(new Driver()) -
建立与数据库连接:
-
这需要使用DriverManager.getConnection()方法来创建一个Connection对象,它代表一个物理连接的数据库
Connectionconn=DriverManager.getConnection(URL,USER,PASS);`
URL:jdbc:mysql://ip(127.0.0.1):端口(3306)/数据库
名?serverTimezone=Asia/Shanghai
USER:用户名(root)
PASS:密码
Connection connection =
DriverManager.getConnection(“jdbc:mysql://127.0.0.1:3306/schooldb?serverTimezone=Asia/Shanghai”,“root”,“root”); -
获得Satement执行sql语句
-
Statement st = connection.createStatement();
-
executeUpdate(String sql) 用于执行ddl语句
Statement st = connection.createStatement();
st.executeUpdate("INSERT INTO student(NAME,gender,birthday,phone)" +
"VALUE('"+name+"','"+gender+"','"+birthday+"','"+phone+"')");
st.close();
connection.close();
- 获得PrepareStatement执行sql语句
- 在sql语句中参数位置使用占位符,使用setXX方法向sql中设置参数
- PrepareStatement ps=connection.prepareStatement(sql)
PreparedStatement ps = connection.prepareStatement("insert into student(name,gender,birthday,phone)"+
"value(?,?,?,?)");
ps.setObject(1,name);
ps.setObject(2,gender);
ps.setObject(3,birthday);
ps.setObject(4,phone);
ps.executeUpdate();//执行
ps.close();
connection.close();
PreparedStatement和Statement
1、代码的可读性和可维护性.
- 虽然用PreparedStatement来代替Statement会使代码多出几行,但这样的代码无论从可读性还是可维护性上来说.都比直接用Statement的代码高很多档次:
2、最重要的一点是极大地提高了安全性
- PreparedStatement 预先编译sql,向sql中传值是进行检测,一个?是一个占位符,对应一个值 是安全的,防止sql注入
- Statement直接将参数拼接到sql中,不能防止sql注入 不安全
结果集处理
● PreparedStatement和Statement中的executeQuery()方法中会返回一个ResultSet对象,查询结果就封装在此对象中
● 使用ResultSet中的next()方法获得下一行数据
● 使用getXXX(String name)方法获得值