String query = SELECT FoodName FROM Fo" name="description" />
我們已經理解了 JDBC 的基本對象,現在就可以執行 SQL 查詢了。查詢是作為 Statement 對象的方法執行的,您很容易從 Connection 對象獲得 Statement 對象:
CCCCCC"> String query = "SELECT FoodName FROM Food;"; ResultSet results; try { Statement stmt = con.createStatement(); results = stmt.executeQuery(query); } catch (Exception e) {System.out.println("query exception");} |
請注意,這個簡單的查詢返回 Food 表中的整個 FoodName 列。您使用像這樣的簡單查詢獲取整個列的內容。請注意,查詢的查詢本身是一個 ResultSet ,您可以用我們上面剛討論過的方法對它進行處理。
· 打印ResultSet
因為我們總是要從 ResultSets 中打印數據,我們可以設計一種簡單的方法,將整個 ResultSet 轉儲出來,包括表名稱元數據。該子程序如下所示:
private void dumpResults(String head) { // 這是打印列標頭和每列的內容的 // System.out.println(head); |
· 一個簡單的JDBC程序
我們已經學習了 JDBC 的所有基本功能,現在我們可以編寫一個簡單的程序,該程序打開數據庫,打印它的表名以及某一表列的內容,然后對該數據庫執行查詢。此程序如下所示:
import java.net.URL; import java.sql.*; import java.util.*; class JdbcOdbc_test { ResultSet results; ResultSetMetaData rsmd; DatabaseMetaData dma; Connection con; int numCols, i; //-- public JdbcOdbc_test() { String url = "jdbc:odbc:Grocery prices"; String query = "SELECT DISTINCTROW FoodName FROM Food " + "WHERE (FoodName like 'C%');"; try { // 加載 JDBC-ODBC 橋驅動程序 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //連接數據庫 con = DriverManager.getConnection(url); //獲取數據庫的元數據 dma =con.getMetaData(); System.out.println("Connected to:"+dma.getURL()); System.out.println("Driver "+dma.getDriverName()); //將數據庫中的表的名稱轉儲出來 String[] types = new String[1]; types[0] = "TABLES"; //請注意通配符是 % 符號(而不是“*”) results = dma.getTables(null, null, "%", types); dumpResults("--Tables--"); results.close(); } catch (Exception e) {System.out.println(e);} //獲取表列的名稱 System.out.println("--Column Names--"); try { results = dma.getColumns(null, null, "FoodPrice", null); ResultSetMetaData rsmd = results.getMetaData(); int numCols = rsmd.getColumnCount(); while (results.next() ) String cname = results.getString("COLUMN_NAME"); System.out.print(cname + " "); System.out.println(); results.close(); } catch (Exception e) {System.out.println(e);} //列出一個列的內容 -- 這是一個查詢 try { Statement stmt = con.createStatement(); results = stmt.executeQuery("SELECT FOODNAME FROM FOOD;"); } catch (Exception e) {System.out.println("query exception");} dumpResults("--Contents of FoodName column--"); //嘗試實際的 SQL 語句 try { Statement stmt = con.createStatement(); results = stmt.executeQuery(query); } catch (Exception e) {System.out.println("query exception");} dumpResults("--Results of Query--"); } |
該程序打印出的結果如下所示:
C:\Projects\objectJava\chapter19>java JdbcOdbc_test Connected to:jdbc:odbc:Grocery prices Driver JDBC-ODBC Bridge (ODBCJT32.DLL) --Tables-- TABLE_QUALIFIER TABLE_OWNER TABLE_NAME TABLE_TYPE REMARKS groceries null Food TABLE null groceries null FoodPrice TABLE null groceries null Stores TABLE null --Column Names-- FSKey StoreKey FoodKey Price --Contents of FoodName column-- FOODNAME Apples Oranges Hamburger Butter Milk Cola Green beans --Results of Query-- FoodName Cola |
原文轉自:http://www.anti-gravitydesign.com