//------------------------------------------------------------------
// 以下代码可以用作模板。 仅需
// 替换相应的 url、登录和口令,然后替换
// 您要发送到数据库中的 SQL 语句。
//----------------------------------------------------------------------------
//
// 模块: SimpleSelect.java
//
// 描述: ODBC API 的测试程序。 此 java 应用程序
// 将与某一 JDBC 驱动程序连接,发出 select 语句,
// 并显示所有结果列和行
//
// 产品: JDBC 到 ODBC 桥
//
// 作者: Karl Moss
//
// 日期: 1996 年 2 月
//
// 版权所有: 1990-1996 INTERSOLV, Inc.
// 本软件包含 INTERSOLV, Inc. 的
// 机密和所有权信息
//----------------------------------------------------------------------------
import java.net.URL;
import java.sql.*;
class SimpleSelectbak {
public static void main (String args[]) {
String url = "jdbc:odbc:FDZL";
String query = "SELECT * FROM DBA_FDLX";
try {
// 加载 jdbc-odbc 桥驱动程序
Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");
//java.sql.DriverManager.setLogStream(java.lang.System.out);
//DriverManager.setLogStream(System.out);
// 试图与某一驱动程序连接。 每个
// 已注册驱动程序都将被加载,直到
// 找到一个可以处理此 URL 的驱动程序
Connection con = DriverManager.getConnection (
url,"DBA","SQL");
// 如果不能连接,则已
// 抛出异常。 因此,如果进入这一步,
// 则已成功连接到 URL
// 查询并显示连接生成的
// 警告。
checkForWarning (con.getWarnings ());
// 获得 DatabaseMetaData 对象并显示
// 一些有关连接的信息
DatabaseMetaData dma = con.getMetaData ();
/*System.out.println("\nConnected to " + dma.getURL());
System.out.println("Driver " +
dma.getDriverName());
System.out.println("Version " +
dma.getDriverVersion());
System.out.println("");*/
// 创建一个 Statement 对象,使我们可以向
// 驱动程序提交 SQL 语句
Statement stmt = con.createStatement ();
// 提交查询,创建 ResultSet 对象
ResultSet rs = stmt.executeQuery (query);
// 显示结果集中的所有列和行
dispResultSet (rs);
// 关闭结果集
rs.close();
// 关闭语句
stmt.close();
// 关闭连接
con.close();
}
catch (SQLException ex) {
// 生成 SQLException。 捕获它并
// 显示错误信息。 注意
// 可能有多个错误对象链接
// 在一起
System.out.println ("\n*** SQLException caught ***\n");
while (ex != null) {
System.out.println ("SQLState: " +
ex.getSQLState ());
System.out.println ("Message: " + ex.getMessage ());
System.out.println ("Vendor: " +
ex.getErrorCode ());
ex = ex.getNextException ();
System.out.println ("");
}
}
catch (java.lang.Exception ex) {
// 获得其它类型异常 并转储。
ex.printStackTrace ();
}
}
//-------------------------------------------------------------------
// checkForWarning
// 查询并显示警告。 如果存在警告则返回
// 真
//-------------------------------------------------------------------
private static boolean checkForWarning (SQLWarning warn)
throws SQLException {
boolean rc = false;
// 如果给定了 SQLWarning 对象,则显示
// 警告消息。 注意可能有
// 多个警告链接在一起
if (warn != null) {
System.out.println ("\n *** Warning ***\n");
rc = true;
while (warn != null) {
System.out.println ("SQLState: " +
warn.getSQLState ());
System.out.println ("Message: " +
warn.getMessage ());
System.out.println ("Vendor: " +
warn.getErrorCode ());
System.out.println ("");
warn = warn.getNextWarning ();
}
}
return rc;
}
//-------------------------------------------------------------------
// dispResultSet
// 显示给定结果集中的所有列和行
//-------------------------------------------------------------------
private static void dispResultSet (ResultSet rs)
throws SQLException
{
int i,rowcount;
// 获得 ResultSetMetaData。 它将用于
// 列标题
ResultSetMetaData rsmd = rs.getMetaData ();
// 获得结果集中的列数
int numCols = rsmd.getColumnCount ();
// 显示列标题
for (i=1; i<=numCols; i++) {
if (i > 1) System.out.print(",");
System.out.print(rsmd.getColumnLabel(i));
}
System.out.println("");
// 显示数据并获取它,直到结果集末尾
boolean more = rs.next ();
while (more) {
// 在每列中循环获得
// 并显示列数据
for (i=1; i<=numCols; i++) {
if (i > 1) System.out.print(",");
System.out.print(rs.getString(i));
}
System.out.println("");
// 获取结果集的下一行
more = rs.next ();
}
}
}