当前位置:首页 » 编程软件 » 预编译方式

预编译方式

发布时间: 2022-02-05 20:59:27

‘壹’ java有没有方法将硬编译sql直接转换成预编译类型的sql

你说的是防止sql注入的方式吗
“select * from test where name=?”; 参数是传入的 比直接传值要好 这样可以防止sql注入漏洞

‘贰’ 关于java 的prepareStatement预编译问题,以下两种形式为什么前者可以后者不可以呢

LIMIT关键字后面要接2个数字,语法是limit <offset>, <step>,所以你要通过preparedstatement设置limit的后面的参数,首先SQL语句就要改成LIMIT ?,? 然后用setInt去绑定。 按照你的程序,应该是:

pre.setInt(3, 0);

pre.setInt(4, 2);

‘叁’ Java 里有类似于预编译的指令或者方法吗

//#ifdef JDK1.1 和//#endif JDK1.1 这个是注释 private static final long serialVersionUID = -3757789861952010450L; 这个是说定义一个私有的,静态的,不可改变的long型的变量

‘肆’ mysql怎么实现预编译

玩Oracle的都比较关注shared pool,特别是library cache,在使用了绑定变量(预编译sql)之后确实能得到很大的性能提升。现在在转Mysql之后特别是innodb很多东西都还能和Oracle对得上号的,就像innodb_buffer_pool_size类似于Oracle的database buffer cache,innodb_log_buffer_size类似于redo log buffer,但是innodb_additional_mem_pool_size仅仅类似于shared pool的Data dictionary cache,似乎还缺少和library cache相对应的东西。那就有一个问题了,在Mysql里面使用预编译的sql还会有性能提升吗?

这里我用Java的jdbc做了一下测试,分别用Statement和PreparedStatement执行1000个sql,并运行10次

1.使用Statement做硬解析:

结果如下:

elapsed time(ms):14773
elapsed time(ms):16352
elapsed time(ms):14797
elapsed time(ms):15800
elapsed time(ms):12069
elapsed time(ms):14953
elapsed time(ms):13238
elapsed time(ms):12366
elapsed time(ms):15263
elapsed time(ms):13089
average time(ms):14270

可以看出两种方式执行的结果几乎相同,不像Oracle差距那么大。而且就算是用PreparedStatement的方式,在Mysql数据库端抓出来的sql语句也不是以变量id=?的形式出现的,而是实际的数值。后来在网上看到在连接字符串上加上useServerPrepStmts=true可以实现真正的预编译

String url="jdbc:mysql://172.16.2.7:3306/testdb"; url=url+"?useServerPrepStmts=true";

加上这段后可以在数据库端可以看到明确的结果:

mysql> show global status like 'Com_stmt_prepare';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| Com_stmt_prepare | 11 |
+------------------+-------+
1 row in set (0.00 sec)

但是实际的运行结果和上面几乎一样,性能上也没有任何的提升。由此可以推断出Mysql由于缺少类似于Oracle的library cache的部件,因此采用预编译方式执行sql是没有性能上的提升的。

‘伍’ 用预编译的方式查询是不是能够杜绝SQL注入

是的,预编译有个类是PreparedStatement.
这个类的对象是通过参数?来传值的
例:
String sql = "select * from table where id = ?";
Connection con = .....///这里得到是数据库的连接
PreparedStatement ps = con.prepareStatement(sql);
ps.setInt(1,id);//这里的数据库语句所用到的参数要被设置的,如果你传入了错的值,或不同类型的值,它在插入到数据库语句中会编译不通过,这也就防止了SQL注入。

‘陆’ 在java中如何实现预编译

/*
* ProCompile.java *预处理要编译的文件,删除多余的空白,注释,换行,回车等
* Created on 2007年9月18日, 下午8:58 */ package javacompile; import java.io.*;
import java.util.regex.*;
import javax.swing.JOptionPane; /** * @com.junjian.sun public class PerCompile { File f = null;
String fileString = null;
Pattern p = null;
Matcher m = null;
String regex; //正则表达式 //初始化p
public PerCompile() {
regex ="(//.+)" + //(//.+) 对应单行注释
//"|(/\\*(.+\\n)+\\*/)"+ // 想对应多行注释... "|(\\r\\n)" + "|(\\n)"+//(\\r\\n)|(\\n)对应换行
"|(\\B\\s+)" ; // 空白符
String ss;
f = new File(new JOptionPane()
.showInputDialog("请输入文件所在路径~"));
try {
BufferedReader bf = new BufferedReader(new FileReader(f));
ss = bf.readLine()+"\n";
fileString = ss; //如果没有这两句,ss的开头会有“null”
while((ss = bf.readLine())!= null){
fileString += ss+"\n"; bf.close();
} catch (IOException ex) {
ex.printStackTrace(); p = Pattern.compile(regex);
m = p.matcher(fileString); //执行替换所有多余空行,空白符,注释
void Dels(){
System.out.println("before: "+fileString);
if(m.find()) System.out.println("find!!");
System.out.println(m.replaceAll("")); } }

-

‘柒’ 预处理常用的方法有哪些

一、混凝-絮凝

混凝是指向水中投加一定剂量的化学药剂,这些化学药剂在水中发生水解,和水中的胶体粒子互相碰撞,发生电性中和,产生吸附、架桥和网捕作用,从而形成大的絮体颗粒,并从水中沉降,起到了降低颗粒悬浮物和胶体的作用。

二、介质过滤

介质过滤是指以石英砂或无烟煤等为介质,使水在重力或压力下通过由这些介质构成的床层,而水中的的颗粒污染物质则被介质阻截,从而达到与水分离的过程。粒状介质过滤基于“过滤-澄清”的工作过程去除水中的颗粒、悬浮物和胶体。



工业水处理

在工业用水处理中,预处理工序的任务是将工业用水的水源——地表水、地下水或城市自来水处理到符合后续水处理装置所允许的进水水质指标,从而保证水处理系统长期安全、稳定地运行,为工业生产提供优质用水。

预处理的对象主要是水中的悬浮物、胶体、微生物、有机物、游离性余氯和重金属等。这些杂质对于电渗析、离子交换、反渗透、钠滤等水处理装置会产生不利的影响。

‘捌’ 存储过程和预编译有什么区别

绝对不一样 但细节没有十分的把握说准,看看其他高手

补充:嗯,你的说法是对的,但预编译的代码一般后面会很快用到,但数据库的存储过程不一定会经常用到

热点内容
linuxsvn配置 发布:2025-01-08 12:19:11 浏览:380
苹果扁头耳机如何在安卓手机上用 发布:2025-01-08 12:17:37 浏览:109
为什么解绑卡还要密码 发布:2025-01-08 12:13:51 浏览:73
反编译得到源代码的比例 发布:2025-01-08 12:12:36 浏览:619
苹果手机7z怎么解压 发布:2025-01-08 12:11:55 浏览:121
租用的云服务器还需要流量么 发布:2025-01-08 12:11:30 浏览:584
为什么手游对手机配置要求低 发布:2025-01-08 12:06:53 浏览:212
怎么设置qq邮箱独立密码 发布:2025-01-08 11:58:14 浏览:387
公司建设网站怎么搭建服务器 发布:2025-01-08 11:45:43 浏览:307
dell存储分类 发布:2025-01-08 11:40:02 浏览:715