· 执行SQL查询
我们已经理解了 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 |
(未完待续)
文章来源于领测软件测试网 https://www.ltesting.net/