當前位置:首頁 » 編程語言 » javasql預處理
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

javasql預處理

發布時間: 2022-01-20 09:42:26

1. java 連接 sql server 的時候 preparedstatement 的預處理是怎麼回事

1。
prepareStatement會先初始化SQL,先把這個SQL提交到資料庫中進行預處理,多次使用可提高效率。
createStatement不會初始化,沒有預處理,沒次都是從0開始執行SQL。
2。prepareStatement可以替換變數,防止惡意注入。
當你用statement時,如果對方隨意輸入一個帳號,並且密碼是' or '1' = '1,那麼會形成這樣一個sql。。
select * from tb_name = '隨意' and passwd = '' or '1' = '1'; statement無法阻止這個sql的成功執行,更有甚者傳入';drop table tb_name;刪除表的sql~~所有稍微有安全意識的程序員都會選擇preparedstatement。

preparedstatement在SQL語句中可以包含?,可以用ps=conn.prepareStatement("select * from Cust where ID=?");
int sid=1001;
ps.setInt(1, sid);
rs = ps.executeQuery();
可以把?替換成變數。 這樣可以有效防止sql惡意注入。
而Statement只能用
int sid=1001;
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from Cust where ID="+sid);
來實現。

2. java連接資料庫能不能對表名進行預處理

請你用簡單明了 通俗易懂的 問題來闡述!

select * from table as t where t.id >15 呵呵

3. java中SQL的預處理,刪除姓張的記錄

String sql = "delete from users where name like ?";

PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setString(1, "張%");
ResultSet rs = pstmt.executeQuery();

4. java介面,資料庫預處理語句問題

這個方法有(preStament的對象的參數嗎)如
executeUpdate(preStament pStmt);
如果沒有你就在實現該介面的類方法裡面
用preStament好久沒用jdbc了,樓主可能會寫錯,別見怪啊
executeUpdate()throws Exception
{
PreStament pstmt=conn.getPreStament("insert into users values (?,?,?,?)");
pstmt.SetString(1,用戶的信息);
。。。。。
pstmt.executeUpdate();
pstmt.close();
conn.close();
}
然後就可以了

5. java有沒有方法將硬編譯的sql直接轉換成預編譯類型的sql

你說的是防止sql注入的方式嗎
「select * from test where name=?」; 參數是傳入的 比直接傳值要好 這樣可以防止sql注入漏洞

6. java中操作sql語句的方法

對類進行加鎖,表示除了當前線程外的其他線程在該類中所有操作不能進行,包括靜態變數和靜態方法,實際上,對於含有靜態方法和靜態變數的代碼塊的同步,我們通常用此來加鎖。
我想這里用之所以用這個,是為了防止不同用戶(或程序)同時對數據進行更新引起數據混亂吧。

7. java中SQL的預處理,刪除姓張的記錄

delete worker where 姓名 like '張%'

sql語句換下試試。

8. java jdbc技術中預處理語句

第一句中的+號是在編程語言中自己做的字元串鏈接
第二句中的or的這個是對自行拼接語句的一種簡單注入式的登錄,這樣的話哪怕你的密碼不一定正確都有可能登錄上

9. java SQL預處理

PreparedStatement 有setNull()的嘛。。。裡面第二個參數用 java.sql.Types.XXX 。。自己找個合適的吧。

10. java中預處理PrepareStatement為什麼能起到防止SQL注入的作用

不使用這個,我們一般做查詢或更新的條件,是用字元串拼起來的,例如

Stringid=(String)request.getAttribute("id");//假設頁面上傳了一個id值過來
StringSQL="SELECTID,NAMEFROMUSERWHEREID='"+id+"'";//拼接成一個完整的sql語句

但是這樣帶來了一個風險,因為id是界面上客戶輸入的,所以如果沒有進入校驗,有人輸入了一個aa' or '1'='1 把這個值代入到上面的sql語句裡面,sql語句就變成了

SELECTID,NAMEFROMUSERWHEREID='aa'or'1'='1'

這樣就能查到所有的數據了,也就是SQL注入


但是,如果用preparedstatement的話,就沒有這個問題

StringSQL="SELECTID,NAMEFROMUSERWHEREID=?"

然後再將值set進去,如果值裡面有引號等字元時,會自動的啟用轉義,不會破壞這個SQL語句的結果,也就不會造成SQL注入了