㈠ java里的(關於PreparedStatement介面)預編譯
當你向資料庫提交SQL語句後,資料庫要對這條語句進行編譯,例如語法分析、優化路徑選擇、分配資源等一系列操作,這是需要時間的。
當你向資料庫插入10條記錄時,如果使用常規做法,資料庫需要編譯10次。
而使用PreparedStatement介面,資料庫只需要編譯一次,其他只是更改參數就可以了。
所以,當你向資料庫中進行批量操作的時候,預編譯效率比較高。
㈡ 在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("")); } }
-
㈢ java jdbc中事務可以預編譯傳參數嗎
1)載入資料庫驅動
通常我們使用Class類的forName()靜態方法來載入驅動(由各個資料庫廠商自己實現)
Class.forName("com.mysql.jdbc.Driver");
Class.forName("oracle.jdbc.driver.OracleDriver");
"com.mysql.jdbc.Driver"、"oracle.jdbc.driver.OracleDriver"代表了資料庫驅動類對應的字元串
2)通過DriverManager獲取資料庫連接
DriverManager.getConnection(Stringurl,Stringuser,Stringpass);
2.1)url:資料庫連接字元串
2.1.1)Mysql
jdbc:mysql://hostname:port/databasename
2.1.2)Oracle
jdbc:oracle:thin:@hostname:port:databasename
2.2)user:資料庫的系統用戶名
2.3)pass:資料庫的系統密碼
3)通過Connection對象創建Statement對象,Connection創建Statement對象的方法有如下3個
3.1)createStatement(Stringsql):創建基本的Statement對象
3.2)prepareStatement(Stringsql):根據傳入的SQL語句創建預編譯的Statement對象
3.3)prepareCall(Stringsql):根據傳入的SQL語句創建CallableStatement對象
4)使用Statement執行SQL語句
所有的Statement都有如下3個方法來執行SQL語句
4.1)execute():可以執行任何SQL語句,但比較麻煩
4.2)executeUpdate():主要用於執行DML和DDL語句。執行DML語句返回受SQL影響的行數,執行DDL語句返回0
4.3)executeQuery():只能執行查詢語句,執行後返回代表查詢結果的ResultSet對象
5)操作結果集
如果執行的SQL語句是查詢語句,則執行結果將返回一個ResultSet對象,該對象里保存了SQL語句查詢的結果。程序可以通過操作該ResultSet對象來取出查詢結果。ResultSet對象主要提供了如
下方法
5.1)移動記錄指針的方法
5.1.1)next()
5.1.2)previous()
5.1.3)first()
5.1.4)last()
5.1.5)beforeFirst()
5.1.6)afterLast()
5.1.7)absolute()
5.2)獲取指針指向的某行的"特定的列值"
5.2.1)getInt()
5.2.2)getString()
...
該方法既可以使用列索引作為參數,也可以使用列名作為參數
6)回收資料庫資源
包括關閉ResultSet、Statement、Connection等資源
㈣ java預編譯的問題,其中sql語句執行不了,其他插入什麼的都正常,望指點~
pstmt.setString(1,user.getId()+"");
pstmt.setString(2,user.getName());
pstmt.setString(3,user.getPwd());
這是以佔位符方式設置 sql的參數值。
你的sql語句String sql = "select id,name,pwd from userinfo where id=10007";
沒有用到,所以這幾句刪了就行了。或者改為:
String sql = "select id,name,pwd from userinfo where id=?";
pstmt.setString(1,user.getId()+"");
㈤ 關於java 的prepareStatement預編譯問題,以下兩種形式為什麼前者可以後者不可以呢
LIMIT關鍵字後面要接2個數字,語法是limit <offset>, <step>,所以你要通過preparedstatement設置limit的後面的參數,首先SQL語句就要改成LIMIT ?,? 然後用setInt去綁定。 按照你的程序,應該是:
pre.setInt(3, 0);
pre.setInt(4, 2);
㈥ Java怎麼根據三個入參查詢數據
第一個參數返回實例u,傳遞你要返回的U類型對象的初始化實例u。
第二個參數累加器accumulator,可以使用二元_表達式(即二元lambda表達式)聲明你在u上累加你的數據來源t的邏輯。
第三個參數組合器combiner,同樣是二元_表達式,(u,t)->u。
㈦ java裡面的prepareStatement中的「預編譯」的概念的理解
開始執行的時候放入內存··
還有一個好處就是 防止sql注入··
預編譯的sql語句比普通的sql語句要安全很多··
㈧ JAVA帶預編譯的模糊查詢問題
PreparedStatement sta = Getconn.GetConnection().
prepareStatement("select admin_name,name from admin_hy where name like ?");
sta.setString(1, "%張%");
㈨ java中什麼是預編譯precompile
預編譯的作用就是把所以的代碼都運行一遍,等你程序運行到模塊A,這個時候需要到B模塊,就可以直接調用,效果是啟動慢,運行快;所以也稱JAVA為靜態語言,動態語言如JavaScript,特性就是當程序運行到C的時候需要調用D模塊,這個時候才會編譯D模塊。希望對你有幫助,謝謝
㈩ java連接access資料庫是否支持預編譯
PreparedStatement與Statement