當前位置:
首頁 > 知識 > JDBC的通用查詢的方法

JDBC的通用查詢的方法

PreparedStatement

1.Why

1):使用Statement需要進行拼寫SQL語句,很辛苦,而且容易出錯。

2):使用Statement可以發生SQL注入。

SQl注入:

SQL注入是利用某些系統對用戶輸入的數據進行充分的檢查

而在用戶輸入數據中注入非法的SQL語句段或命令,從而充分利用系統的SQL引擎完成惡意行為的做法

對於Java而言,要防範SQL注入,只要用PrepareStatement取代Statement就可以了

String username = a"OR PASSWORD= ;

String password = OR "1"="1;

String sql=SELECT * FROM users WHERE username = "

username. "AND

password=" passwoed ";

System.out.println(sql);

SELECT * FROM users WHERE username="a" OR PASSWORD="AND password = "OR "1"="1"

"

2.What

1):是Statement的子介面。

2):可以傳入帶佔位符的SQL語句,並且提供了補充佔位符變數的方法

3.How

1):創建PreparedStatement

String SQL=INSERT INTO examstudent VALUES(?,?,?,?,?,?,?);

PrepareStatement ps=conn.prepareStatement(sql);

2):調用PreparedStatement 的 setXxx(int index,Object val)設置佔位符的值,index,值從1開始

3):執行SQL語句 executeUpdate() 或 executeQuery()

ResultSetMetaData

1.Why:如果只有一個結果集,但不知道該結果集中有多少列,列的名字都是什麼

1):編寫通用的查詢方法是需要使用。

publicTget(Classclazz,String sql.Object ...args)

2.What:用於描述ResultSet的對象

3.How

1):得到ResultSetMetaData對象,調用ResultSet的getMetaData()方法

ResultSetMetaData rsmd=resultSet.getMetaData();

2):ResultSetMetaData有哪些好用的方法;

int getColumnCount();結果集中的列數

String getColumnLabel(int column);獲取指定的列的列名,其中索引從1開始

while(resultSet.next()){

for(int i=0;irsmd.getcolumncount();i ){ p=

String columnLable=rsmd.getColumnLabel(i 1);

}

}

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 千鋒JAVA開發學院 的精彩文章:

簡單理解Hadoop架構原理
如何備份MySQL資料庫

TAG:千鋒JAVA開發學院 |