JDBC核心API-PreparedStatement
1 PreparedStatement接口介绍
PreparedStatement接口是Statement的子接口。用于执行参数化SQL语句。
让我们看一下参数化SQL语句的示例:
String sql="insert into t_user values(?,?,?)";
上面的SQL语句中,参数(?)作为参数的占位符。?的值将通过调用PreparedStatement的setter方法进行设置。
2 为什么使用PreparedStatement?
提高SQL执行性能:如果使用PreparedStatement接口,JDBC程序的性能将更好,因为SQL仅被编译一次即可。
3 如何获取PreparedStatement对象?
Connection接口的prepareStatement() 方法用于返回PreparedStatement的对象。语法为:
public PreparedStatement prepareStatement(String query)throws SQLException{}
4 PreparedStatement接口的方法
下面列出了PreparedStatement接口的重要方法:
方法 | 说明 |
---|---|
public void setInt(int paramIndex, int value) | 将int值赋值给指定索引的参数。 |
public void setString(int paramIndex, String value) | 将String值赋值给指定索引的参数。 |
public void setFloat(int paramIndex, float value) | 将float值赋值给指定索引的参数。 |
public void setDouble(int paramIndex, double value) | 将double值赋值给指定索引的参数。 |
public int executeUpdate() | 执行更新类操作。它用于执行insert、update、delete等SQL。 |
public ResultSet executeQuery() | 执行查询操作。它返回一个ResultSet对象。 |
5 PreparedStatement插入记录
首先创建t_user表,如下所示:
CREATE TABLE `t_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) DEFAULT NULL,
`password` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
5.1 编写InsertDemo
package com.yiidian;
import java.sql.*;
/**
* 一点教程网 - http://www.yiidian.com
*/
public class InsertDemo {
public static void main(String args[])throws Exception {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
//预编译SQL语句
PreparedStatement stmt = con.prepareStatement("insert into t_user(username,password) values(?,?)");
//给SQL的参数赋值
stmt.setString(1, "rose");
stmt.setString(2, "123");
int i = stmt.executeUpdate();
System.out.println(i + " 条记录被影响");
con.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
5.2 运行测试
6 PreparedStatement更新记录
6.1 编写UpdateDemo
package com.yiidian;
import java.sql.*;
/**
* 一点教程网 - http://www.yiidian.com
*/
public class UpdateDemo {
public static void main(String args[])throws Exception {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
PreparedStatement stmt=con.prepareStatement("update t_user set username=?,password=? where id=?");
stmt.setString(1,"jack");
stmt.setString(2,"123");
stmt.setInt(3,9);
int i=stmt.executeUpdate();
System.out.println(i+" 条记录被影响");
con.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
6.2 运行测试
7 PreparedStatement删除记录
7.1 编写DeleteDemo
package com.yiidian;
import java.sql.*;
/**
* 一点教程网 - http://www.yiidian.com
*/
public class DeleteDemo {
public static void main(String args[])throws Exception {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
PreparedStatement stmt=con.prepareStatement("delete from t_user where id=?");
stmt.setInt(1,9);
int i=stmt.executeUpdate();
System.out.println(i+" 条记录被影响");
con.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
7.2 运行测试
8 PreparedStatement查询记录
8.1 编写SelectDemo
package com.yiidian;
import java.sql.*;
/**
* 一点教程网 - http://www.yiidian.com
*/
public class SelectDemo{
public static void main(String args[])throws Exception {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
PreparedStatement stmt=con.prepareStatement("select * from t_user");
ResultSet rs=stmt.executeQuery();
while(rs.next()){
System.out.println(rs.getInt(1)+" "+rs.getString(2)+" "+rs.getString(3));
}
con.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
8.2 运行测试
热门文章
优秀文章