本文實(shí)例展示了Java采用setAsciiStream()方法檢索數(shù)據(jù)庫的實(shí)例代碼。使用參數(shù)查詢必須在SQL 語句執(zhí)行之前對參數(shù)進(jìn)行賦值,賦值是使用PreparedStatement 對象的SetBoolean()、SetInt()、SetString()、SetObject()、SetNull()等方法來實(shí)現(xiàn)。這些方法建立了Java數(shù)據(jù)類型和SQL 數(shù)據(jù)類型的映射。JDBC 可以使用輸入流作為SQL 語句的輸入?yún)?shù),設(shè)置輸入流的方法有三個(gè):setAsciiStream()、setUnicodeStream()、setBinaryStream()。本例采用了setAsciiStream()方法,此方法將ASCII 碼值輸入到SQL 的Longvarchar 類型的參數(shù)中。執(zhí)行查詢后會(huì)返回一個(gè)ResultSet 對象,該對象包括查詢語句返回的存放有查詢結(jié)果的表,通過使用ResultSet 對象的next()方法可以獲得記錄集的下一條記錄。使用ResultSet 對象的getInt()、getString、getBoolean()、getByte()、getObject()等方法來獲得記錄中的數(shù)據(jù)。使用這些方法是根據(jù)返回值的需要來確定。使用isNull()方法可以判斷輸出參數(shù)是否為空。本例中使用了getString()來獲取學(xué)生的姓名、年齡、住址、電話信息,使用了getInt()方法來獲取學(xué)生的班級號碼。
程序?qū)崿F(xiàn)步驟如下:
1.編寫useParameterResultSet 類的基本框架,在該類中僅包括main()方法,在main()方法中先加載驅(qū)動(dòng)程序,建立與數(shù)據(jù)庫的連接,對數(shù)據(jù)庫執(zhí)行一般查詢,接著執(zhí)行參數(shù)查詢,最后執(zhí)行存儲(chǔ)過程。
2.該類的全部代碼如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
//使用了JDBC 類、DriverManager 類和系統(tǒng)輸出,所以需要引入如下的包: 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 { //加載驅(qū)動(dòng)程序 Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" ); //建立連接 Connection con=DriverManager.getConnection(url, "sa" , "" ); //創(chuàng)建文件輸入流 File file= new File( "d:/java/usefile.txt" ); int flength= 2 ; InputStream fis= new FileInputStream(file); //創(chuàng)建PreparedStatement 對象 String sqlstr= "select * from student where age=?" ; PreparedStatement ps=con.prepareStatement(sqlstr); //設(shè)置輸入?yún)?shù) ps.setAsciiStream( 1 ,fis,flength); //獲得結(jié)果集 rs=ps.executeQuery(); //輸出結(jié)果集 System.out.println( "查詢結(jié)果:" ); 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(); } } } |
感興趣的讀者可以動(dòng)手測試一下本文所述實(shí)例,相信會(huì)給大家的Java項(xiàng)目開發(fā)起到一定的幫助作用。