本文實例展示了Java採用setAsciiStream()方法檢索資料庫的實例程式碼。使用參數查詢必須在SQL 語句執行之前對參數進行賦值,賦值是使用PreparedStatement 物件的SetBoolean()、SetInt()、SetString()、SetObject()、SetNull()等方法來實作。這些方法建立了Java資料型別和SQL 資料型別的對應。 JDBC 可以使用輸入流作為SQL 語句的輸入參數,而設定輸入流的方法有三:setAsciiStream()、setUnicodeStream()、setBinaryStream()。本範例採用了setAsciiStream()方法,此方法將ASCII 碼值輸入到SQL 的Longvarchar 類型的參數。執行查詢後會傳回一個ResultSet 對象,該物件包含查詢語句傳回的存放有查詢結果的表,透過使用ResultSet 物件的next()方法可以取得記錄集的下一筆記錄。使用ResultSet 物件的getInt()、getString、getBoolean()、getByte()、getObject()等方法來取得記錄中的資料。使用這些方法是根據傳回值的需要來決定。使用isNull()方法可以判斷輸出參數是否為空。本例中使用了getString()來取得學生的姓名、年齡、住址、電話訊息,使用了getInt()方法來取得學生的班級號碼。
程式實作步驟如下:
1.編寫useParameterResultSet 類別的基本框架,在該類別中僅包括main()方法,在main()方法中先載入驅動程序,建立與資料庫的連接,對資料庫執行一般查詢,接著執行參數查詢,最後執行預存程序。
2.該類別的全部程式碼如下:
//使用了JDBC 類別、DriverManager 類別和系統輸出,所以需要引入如下的套件:import java.sql.*;import java.io.*;//import java.util.*;class useParameterResultSet{public static void main (String argv[]){String url="jdbc.odbc:useDSN";String name,age,address,telephone;int cno;java.sql.ResultSet rs;try{//載入驅動程式Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//建立連線Connection con=DriverManager.getConnection(url,"sa","" );//建立檔案輸入流File file=new File("d:/java/usefile.txt");int flength=2;InputStream fis=new FileInputStream(file);//建立PreparedStatement 物件String sqlstr="select * from student where age=?";PreparedStatement ps=con.prepareStatement(sqlstr);//設定輸入參數ps.setAsciiStream(1,fis,flength);//取得結果集rs=ps.executeQuery();//輸出結果集System.out.println("查詢結果:");while(rs.next()){name=rs .getString("name");age=rs.getString("age");cno=rs.getInt("classno");address=rs.getString("address");telephone=rs.getString("telephone" );System.out.println(name+" "+age+" "+cno+" "+address+" "+telephone);}con.close();}catch(Exception e){System.out.println(e.getMessage());e.printStackTrace(); }}}
有興趣的讀者可以動手測試一下本文所述實例,相信會為大家的Java專案開發起到一定的幫助作用。