关于mysql使用prepare关键字预编译语句后是否使用deallocate的区别

下图是mysql数据库中某一数据库,里面有一张user表。

1.新建查询之后,下图展示的使用prepare预编译查询结果(注意:使用了DEALLOCATE关键字删除预编译语句)

2.再次运行刚才的预编译语句aa,

结果出现错误。原因是:之前使用deallocate已经删除了预编译语句。

3.这一次不使用deallocate关键字删除预编译语句。

再一次调用已经预编译过的aa语句。

这一次仍然可以使用该语句。

4.使用deallocate删除该语句。

再次运行已删除语句。

结果再次报错。说明deallocate语句已经将预编译语句删除。

时间: 2024-09-30 15:23:15

关于mysql使用prepare关键字预编译语句后是否使用deallocate的区别的相关文章

PDO预编译语句执行查询与DML操作

代码示例: MyPDO.class.php的代码如下: /** * 使用PDO预编译语句执行DML操作并返回受影响的行数 * @param $sql 需要执行的SQL语句(预编译语句写法) * @param array $arr 预编译语句需要添加的数据值,数组结构 * @return int 返回DML执行后受影响的行数 */public function intByPdoPrepare($sql, array $arr=array()){ $ps =$this->pdo->prepare(

SQL或HQL预编译语句,能够防止SQL注入,但是不能处理%和_特殊字符

最近项目在做整改,将所有DAO层的直接拼接SQL字符串的代码,转换成使用预编译语句的方式.个人通过写dao层的单元测试,有以下几点收获. dao层代码如下 //使用了预编译sql public List<IndvConfigModel> selectConfigBySuffix(String suffix) { String hql = "from IndvConfigModel where configKey like '%'||?||'%'"; return this.

JDBC预编译语句表名占位异常

有时候,我们有这样的需求,需要清空多个表的内容,这样我们有两种做法,可用delete from table 或 truncate table table,两种方法视情况而定,前者只是一条条的删除表数据,主键自增的序列还能保存,后者类似是重新建表保留表结构,主键信息,也被清空. OK,下面我们用JDBC开始删除,因为是多个表,所以要循环删除,根据以往的经验,使用预编译的sql语句,可能执行效率会更高,短短几行代码,搞定: public void clearTables()throws Except

JDBC 预编译语句对象

Statement的安全问题:Statement的执行其实是直接拼接SQL语句,看成一个整体,然后再一起执行的. String sql = "xxx"; // ? 预先对SQL语句进行语法的校验 PreparedStatement ps = conn.prepareStatement(sql); // ? 对应的索引从1开始 ps.setString(1, username); ps.setString(2, password); rs = ps.executeQuery(); 还可以

Mysql的预编译和批处理

MySQL的预编译功能 预编译的好处 大家平时都使用过JDBC中的PreparedStatement接口,它有预编译功能.什么是预编译功能呢?它有什么好处呢? 当客户发送一条SQL语句给服务器后,服务器总是需要校验SQL语句的语法格式是否正确,然后把SQL语句编译成可执行的函数,最后才是执行SQL语句.其中校验语法,和编译所花的时间可能比执行SQL语句花的时间还要多. 如果我们需要执行多次insert语句,但只是每次插入的值不同,MySQL服务器也是需要每次都去校验SQL语句的语法格式,以及编译

JDBC 删除数据两种方式,PreparedStatement表示预编译的 SQL 语句的对象,防止sql注入

1.statement使用的不方便 2.sql注入的问题 *  在SQL语句中使用了系统自带的关键字 or and ,让where条件判断失效 *   prepareStatement: *  1.sql语句不用在拼字符串 *  2.防止sql注入问题 1 public class CURDTest { 2 public static void main(String[] args) throws Exception { 3 //insertTest(); 4 //deleteTest(); 5

mysql sp 练习游标和预编译

create procedure Jack_count_cur_dual() BEGIN DECLARE tb_name VARCHAR(50); DECLARE done int DEFAULT 0; DECLARE mycur CURSOR for SELECT table_name FROM tt_countrows; DECLARE CONTINUE HANDLER FOR NOT FOUND set done = 1; DROP TABLE IF EXISTS tt_countrows

MySQL的预编译功能

MySQL的预编译功能 预编译的好处 大家平时都使用过JDBC中的PreparedStatement接口,它有预编译功能.什么是预编译功能呢?它有什么好处呢? 当客户发送一条SQL语句给服务器后,服务器总是需要校验SQL语句的语法格式是否正确,然后把SQL语句编译成可执行的函数,最后才是执行SQL语句.其中校验语法,和编译所花的时间可能比执行SQL语句花的时间还要多. 如果我们需要执行多次insert语句,但只是每次插入的值不同,MySQL服务器也是需要每次都去校验SQL语句的语法格式,以及编译

atitit.查看预编译sql问号 本质and原理and查看原生sql语句

atitit.查看预编译sql问号 本质and原理and查看原生sql语句 1. 预编译原理. 1 2. preparedStatement 有三大优点: 1 3. How to look  gene  sql 2 1. Hb cfg all debug ,cant see... 2 2. WSExplorer按照进程抓取pack可以看见.. 2 3. Mysql 5.6 开放日志可以看见 2 4. Mysql and msssql的不同实现 2 4. MYSql的实现是jdbc连接完全的sql