(5)JDBC的PreparedStatment对象使用

时间:2020-12-14 11:56:40

一. PreparedStatement说明

使用Statement对象,每次查询的时候,都需要将sql传递给数据库。

如果我们执行同一语句,每次传相同的sql给数据库,效率很低。

可以通过PreparedStatement对象提高效率,如果数据库支持预编译执行,

PreparedStatement将SQL传递给数据库进行预编译,之后执行相同语句时,

直接使用预编译好的语句执行,提高查询效率。如果数据库不支持预编译,

Statement和PreparedStatement都是每次将SQL传送给数据库,效率一样。

同时,PreparedStatement的另一个好处就是可以接受多个查询参数,

将SQL与参数拼接好,传递给数据库进行预编译。

PreparedStatement继承于Statement,具有Statement的功能

包含: execute(),executeQuery(),executeUpdate()等方法。

二 查询实例

1. 建表

CREATE TABLE `t_user_main` (
`oid` varchar(32) NOT NULL COMMENT '主键',
`userName` varchar(255) DEFAULT NULL COMMENT '用户名',
`userPwd` varchar(255) DEFAULT NULL COMMENT '登陆密码',
PRIMARY KEY (`oid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2. 插入数据

INSERT INTO t_user_main (oid,userName,userPwd) 
VALUES ('1','one','111111'),('2','two','222222');

3. 查询实例代码

package com.lanhuigu.JavaBase.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class JDBCPreparedStatementTest {

public static void main(String[] args) {
String user = "root";
String password = "lanhuigu";
/*
* useUnicode=true:表示使用Unicode字符集
* characterEncoding=UTF8:字符编码方式
* allowMultiQueries=true:是否允许批量处理
*/
String url = "jdbc:mysql://127.0.0.1:3306/lanhuigu_web?useUnicode=true"
+ "&characterEncoding=UTF8&allowMultiQueries=true";
String driver = "com.mysql.jdbc.Driver";

try {
//1.加载驱动程序
Class.forName(driver);
//2.建立连接
Connection conn = DriverManager.getConnection(url, user, password);
//3.创建PreparedStatement对象
String sql = " SELECT oid, userName, userPwd FROM t_user_main WHERE oid = ? ";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1,"1");// 对应参数位置赋值
//4.查询--返回查询结果
ResultSet rs = ps.executeQuery();
//5.打印查询结果
while (rs.next()) {
System.out.println("oid:"+rs.getString("oid")
+ ", userName:" + rs.getString("userName")
+ ", userPwd:" + rs.getString("userPwd"));
}
//6.关闭连接
conn.close();// 关闭数据库连接
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
}

}
结果:

oid:1, userName:one, userPwd:111111