當前位置:首頁 » 編程軟體 » 預編譯方式

預編譯方式

發布時間: 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("")); } }

-

『柒』 預處理常用的方法有哪些

一、混凝-絮凝

混凝是指向水中投加一定劑量的化學葯劑,這些化學葯劑在水中發生水解,和水中的膠體粒子互相碰撞,發生電性中和,產生吸附、架橋和網捕作用,從而形成大的絮體顆粒,並從水中沉降,起到了降低顆粒懸浮物和膠體的作用。

二、介質過濾

介質過濾是指以石英砂或無煙煤等為介質,使水在重力或壓力下通過由這些介質構成的床層,而水中的的顆粒污染物質則被介質阻截,從而達到與水分離的過程。粒狀介質過濾基於「過濾-澄清」的工作過程去除水中的顆粒、懸浮物和膠體。



工業水處理

在工業用水處理中,預處理工序的任務是將工業用水的水源——地表水、地下水或城市自來水處理到符合後續水處理裝置所允許的進水水質指標,從而保證水處理系統長期安全、穩定地運行,為工業生產提供優質用水。

預處理的對象主要是水中的懸浮物、膠體、微生物、有機物、游離性余氯和重金屬等。這些雜質對於電滲析、離子交換、反滲透、鈉濾等水處理裝置會產生不利的影響。

『捌』 存儲過程和預編譯有什麼區別

絕對不一樣 但細節沒有十分的把握說准,看看其他高手

補充:嗯,你的說法是對的,但預編譯的代碼一般後面會很快用到,但資料庫的存儲過程不一定會經常用到

熱點內容
領導專車配置物品怎麼處理 發布:2025-01-07 06:49:50 瀏覽:444
ftp字元集 發布:2025-01-07 06:28:21 瀏覽:344
資料庫返回值 發布:2025-01-07 06:17:26 瀏覽:376
彈簧自動壓縮 發布:2025-01-07 06:08:35 瀏覽:523
傳奇榮耀腳本 發布:2025-01-07 05:53:14 瀏覽:980
為什麼安卓手機連接不了蘋果耳機 發布:2025-01-07 05:37:49 瀏覽:76
c語言mfc 發布:2025-01-07 05:33:18 瀏覽:593
自己搭建郵件伺服器ddns 發布:2025-01-07 05:19:29 瀏覽:206
光碟機無法訪問指定設備 發布:2025-01-07 05:17:19 瀏覽:105
如何刪除人人網的訪問記錄 發布:2025-01-07 05:02:47 瀏覽:281