SQL语句中的PreparedStatement的使用
1预处理搬运工
对数据库的增删查改,可以使用statement对象去执行sql语句,也可以使用preparedStatement对象来执行.
先区分一下两种sql语句:
静态的SQL语句: insert into work (name, age, info) values(“狗蛋”, 12, “asjj”); Statement
参数化的SQL语句: insert into work (name, age, info) values(?, ?, ?); PreparedStament
静态的sql简单是已经写死了,固定了的sql语句,而封装的sql语句是不能更改的,所以说开发往往都不用静态的.
参数化的sql语句是不固定的,用?来占用值,相当于萝卜坑,一个数据一个坑,最后组成一条数据.很灵活.
package com.qf.a_mysql;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class Demo1 {
public static void main(String[] args) throws Exception{
//1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/java2304?useSSL=false";
String user = "root";
String password = "123456";
Connection connection = DriverManager.getConnection(url, user, password);
//1.创建预处理的搬运工对象
String sql = "insert into work (name, age, info) values(?, ?, ?)";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
//2.SQL语句已预编译并存储在PreparedStatement对象中
//对sql语句中的?进行赋值
//使用给定对象设置指定参数的值。
preparedStatement.setObject(1, "张三");//对第一个?进行赋值
preparedStatement.setObject(2, 12);//对第二个?进行赋值
preparedStatement.setObject(3, "爱吃冰淇淋");//对第三个?进行赋值
//3.执行sql语句
int i = preparedStatement.executeUpdate();
System.out.println(i);
//4.关闭资源
preparedStatement.close();
connection.close();
}
}
上面书写了对表的插入操作,其他操作其实也是一样的,只是查找调用的方法是executeQuery()而已.返回的是个resultSet结果集而已,打印输出即可.