第一篇隨記:學習WAMP中最基礎的JDBC連線操作記錄( Statement、PreparedStatement和CallableStatement)
用Statement實現資料庫連線:
<%@ page contentType="text/html" pageEncoding="UTF-8" %>
<%@ page import="java.sql.*" %>
<html>
<head>
</head>
<body>
<!-- 單獨寫全域性! -->
<%!
public static final String DBDRIVER="org.gjt.mm.mysql.Driver";
public static final String DBURL="jdbc:mysql://localhost:3306/test";
public static final String DBUSER="root";
public static final String DBPASS="123456";
%>
<!-- 不在try裡定義,為了最後在final裡關閉 -->
<%
Connection conn =null;
Statement stmt = null;
ResultSet rs = null;
%>
<%
try{
Class.forName(DBDRIVER);
conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS);
String sql="select empno,ename,job,sal,hiredate from emp";
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
%>
<div>
<table border="2dp">
<tr>
<td>a</td>
<td>b</td>
<td>c</td>
<td>d</td>
<td>e</td>
</tr>
<%
while(rs.next()){
int a=rs.getInt(1);
String b=rs.getString(2);
String c=rs.getString(3);
float d=rs.getFloat(4);
java.util.Date e=rs.getDate(5);
%>
<tr>
<td><%=a %></td>
<td><%=b %></td>
<td><%=c %></td>
<td><%=d %></td>
<td><%=e %></td>
</tr>
<%
}
%>
</table>
</div>
<!-- catch在try出錯時執行,finally無論如何都執行-->
<%
}catch(Exception e){
System.out.println(e);
}finally{
rs.close();
stmt.close();
conn.close();
}
%>
</body>
</html>
實現效果:
關於Statement(介面)、PreparedStatement(介面)、CallableStatement(介面):
以上三者為依次前繼承後的關係。
一、Statement:(用於執行不帶引數的簡單 SQL 語句,用於執行僅一次查詢並返回結果的情形,這種情況下效率高於 PreparedStatement,應用如上)
二、PreparedStatement:(用於執行帶或不帶 IN 引數的預編譯SQL 語句)
a.由於採用Cache機制,則預先編譯的語句,就會放在Cache中,下次執行相同SQL語句時,則可以直接從Cache中取出來,效率高;
b.安全性好,有效防止Sql注入等問題;
c.對於多次重複執行的語句,使用PreparedStament效率會更高一點,並且在這種情況下也比較適合使用batch;
d. 程式碼的可讀性和可維護性。
用法1:
PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES SET SALARY = ? WHERE ID =?");
pstmt.setBigDecimal(1, 153833.00);
pstmt.setInt(2, 110592);
pstmt. executeUpdate();
用法2(批處理):
PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES SET SALARY = ? WHERE ID =?");
for(int i =0;i<length;i++){
pstmt.setBigDecimal(1, param1[i]);
pstmt.setInt(2, param2[i]);
pstmt.addBatch();
}
pstmt. executeBatch();
三、CallableStatement :(用於執行對資料庫已儲存過程的呼叫)
瞭解不深,後續 不補充
此本僅做個人學習記錄,如有錯誤,請指正。十分感謝