1. 程式人生 > >第一篇隨記:學習WAMP中最基礎的JDBC連線操作記錄( Statement、PreparedStatement和CallableStatement)

第一篇隨記:學習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 :(用於執行對資料庫已儲存過程的呼叫)
      瞭解不深,後續 不補充

 

 

此本僅做個人學習記錄,如有錯誤,請指正。十分感謝