目录
一、概述
使用 PreparedStatement 预处理对象时,建议每条sql语句所有的实际参数,都使用逗号分隔
String sql = "insert into users(username,password) values(?,?)";
PreparedStatement预处理对象代码:
PreparedStatement pre = conn.prepareStatement(sql)
执行SQL语句:
- int executeUpdate(): --执行insert update delete语句
- ResultSet executeQuery(): --执行select语句
- boolean execute(): --执行select返回true 执行其他的语句返回false
设置实际参数
- void setXxx(int index, Xxx xx) :将指定参数设置为给定Java的
xx
值。在将此值发送到数据库时,驱动程序将它转换成一个 SQLXxx类型
值
二、预处理对象executeUpdate方法
通过预处理对象的executeUpdate方法,完成记录的insert\update\delete语句的执行。操作格式统一如下:
- 注册驱动
- 获取连接
- 获取预处理对象
- SQL语句占位符设置实际参数
- 执行SQL语句
- 释放资源
1、插入记录(insert)
实现向学生表中插入新的记录
public static void main(String[] args) throws SQLException, ClassNotFoundException {
//1.注册驱动 反射技术,将驱动类加入到内容
Class.forName("com.mysql.jdbc.Driver");
//2.获得数据库连接 DriverManager类中静态方法
//static Connection getConnection(String url, String user, String password)
//返回值是Connection接口的实现类,在mysql驱动程序
//url: 数据库地址 jdbc:mysql://连接主机IP:端口号//数据库名字
String url = "jdbc:mysql://localhost:3306/mydb";
String username = "root";
String password = "123456";
Connection con = DriverManager.getConnection(url,username,password);
//执行SQL语句查询数据表
String sql = "insert into student(sno,sname,ssex,sage) values(?,?,?,?)";
//3.调用Connection接口的方法prepareStatement,获取PrepareStatement接口的实现类
//方法中参数,SQL语句中的参数全部采用问号占位符
PreparedStatement pre = con.prepareStatement(sql);
//4 SQL语句占位符设置实际参数
pre.setObject(1,15450111);
pre.setObject(2,"五颗星");
pre.setObject(3,"男");
pre.setObject(4,10);
System.out.println(sql);
//5、执行SQL语句
int Line = pre.executeUpdate();
System.out.println("更新记录:" + Line);
//释放资源
pre.close();
con.close();
}
2、删除记录(delete)
实现向学生表中删除记录
public static void main(String[] args) throws SQLException, ClassNotFoundException {
//1.注册驱动 反射技术,将驱动类加入到内容
Class.forName("com.mysql.jdbc.Driver");
//2.获得数据库连接 DriverManager类中静态方法
//static Connection getConnection(String url, String user, String password)
//返回值是Connection接口的实现类,在mysql驱动程序
//url: 数据库地址 jdbc:mysql://连接主机IP:端口号//数据库名字
String url = "jdbc:mysql://localhost:3306/mydb";
String username = "root";
String password = "123456";
Connection con = DriverManager.getConnection(url,username,password);
//执行SQL语句查询数据表
String sql = "delete from student where sname=?";
//3.调用Connection接口的方法prepareStatement,获取PrepareStatement接口的实现类
//方法中参数,SQL语句中的参数全部采用问号占位符
PreparedStatement pre = con.prepareStatement(sql);
//4 SQL语句占位符设置实际参数
pre.setObject(1,"两颗星");
System.out.println(sql);
//5、执行SQL语句
int Line = pre.executeUpdate();
System.out.println("更新记录:" + Line);
//6.释放资源
pre.close();
con.close();
}
3、更新记录(update)
实现更新Student 学生表中的 Sname 中的值
public static void main(String[] args) throws SQLException, ClassNotFoundException {
//1.注册驱动 反射技术,将驱动类加入到内容
Class.forName("com.mysql.jdbc.Driver");
//2.获得数据库连接 DriverManager类中静态方法
//static Connection getConnection(String url, String user, String password)
//返回值是Connection接口的实现类,在mysql驱动程序
//url: 数据库地址 jdbc:mysql://连接主机IP:端口号//数据库名字
String url = "jdbc:mysql://localhost:3306/mydb";
String username = "root";
String password = "123456";
Connection con = DriverManager.getConnection(url,username,password);
//执行SQL语句查询数据表
String sql = "update Student set Sname=? where Sno=?;";
//3.调用Connection接口的方法prepareStatement,获取PrepareStatement接口的实现类
//方法中参数,SQL语句中的参数全部采用问号占位符
PreparedStatement pre = con.prepareStatement(sql);
//4 SQL语句占位符设置实际参数
pre.setObject(1,"星星");
pre.setObject(2,"15450132");
System.out.println(sql);
//5、执行SQL语句
int Line = pre.executeUpdate();
System.out.println("更新记录:" + Line);
//6.释放资源
pre.close();
con.close();
}
三、预处理对象executeQuery方法
1、查询记录
实现查血学生表中的记录
public static void main(String[] args) throws SQLException, ClassNotFoundException {
//1.注册驱动 反射技术,将驱动类加入到内容
Class.forName("com.mysql.jdbc.Driver");
//2.获得数据库连接 DriverManager类中静态方法
//static Connection getConnection(String url, String user, String password)
//返回值是Connection接口的实现类,在mysql驱动程序
//url: 数据库地址 jdbc:mysql://连接主机IP:端口号//数据库名字
String url = "jdbc:mysql://localhost:3306/mydb";
String username = "root";
String password = "123456";
Connection con = DriverManager.getConnection(url,username,password);
//执行SQL语句查询数据表
String sql = "select * from student";
//3.调用Connection接口的方法prepareStatement,获取PrepareStatement接口的实现类
//方法中参数,SQL语句中的参数全部采用问号占位符
PreparedStatement pre = con.prepareStatement(sql);
System.out.println(sql);
//4、执行SQL语句
ResultSet re = pre.executeQuery();
while (re.next()){
System.out.println(re.getString("sno") + " " + re.getString("sname") + " " +
re.getString("ssex") + " " + re.getString("sage"));
}
}