📄 simpleselect.doc.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=gb2312">
<title></title>
</head>
<body bgcolor="#ffffff">
<table width="600">
<tr>
<td><font size="-1"><a href="introTOC.doc.html">目录</a> | <a href="mapping.doc.html">上一页</a>
| <a href="bridge.doc.html">下一页</a> </font></td>
<td align="right"><i>JDBC<sup><font size="-2">TM</font></sup> 指南:入门</i></td>
</tr>
</table>
<hr>
<p><br>
<a name="418284"></a> </p>
<h1>9 - 样本代码</h1>
<ul>
<pre><a name="418162"></a><font size="-1">// 以下代码可以用作模板。 仅需
</font><a
name="418163"></a><font size="-1">// 替换相应的 url、登录和口令,然后替换
</font><a
name="418280"></a><font size="-1">// 您要发送到数据库中的 SQL 语句。
</font><a
name="417928"></a><font size="-1">
</font><a name="417929"></a><font size="-1">
</font><a
name="417931"></a><font size="-1">
</font><a name="417932"></a><font size="-1">//----------------------------------------------------------------------------
</font><a
name="417933"></a><font size="-1">//
</font><a name="417934"></a><font size="-1">// 模块: SimpleSelect.java
</font><a
name="417935"></a><font size="-1">//
</font><a name="417936"></a><font size="-1">// 描述: ODBC API 的测试程序。 此 java 应用程序
</font><a
name="417937"></a><font size="-1">// 将与某一 JDBC 驱动程序连接,发出 select 语句,
</font><a
name="417938"></a><font size="-1">// 并显示所有结果列和行
</font><a name="417939"></a><font
size="-1">//
</font><a name="417940"></a><font size="-1">// 产品: JDBC 到 ODBC 桥
</font><a
name="417941"></a><font size="-1">//
</font><a name="417942"></a><font size="-1">// 作者: Karl Moss
</font><a
name="417943"></a><font size="-1">//
</font><a name="417944"></a><font size="-1">// 日期: 1996 年 2 月
</font><a
name="417945"></a><font size="-1">//
</font><a name="417946"></a><font size="-1">// 版权所有: 1990-1996 INTERSOLV, Inc.
</font><a
name="417947"></a><font size="-1">// 本软件包含 INTERSOLV, Inc. 的
</font><a
name="417948"></a><font size="-1">// 机密和所有权信息
</font><a name="417949"></a><font
size="-1">//----------------------------------------------------------------------------
</font><a
name="417950"></a><font size="-1">
</font></pre>
</ul>
<pre><a name="417951"></a><font size="-1">import java.net.URL;
</font><a name="417952"></a><font
size="-1">import java.sql.*;
</font><a name="417953"></a><font size="-1">
</font><a
name="417954"></a><font size="-1">class SimpleSelect {
</font></pre>
<ul>
<pre><a name="417955"></a><font size="-1">
</font><a name="417956"></a><font size="-1">public static void main (String args[]) {
</font><a
name="418150"></a><font size="-1"> String url = "jdbc:odbc:my-dsn";
</font><a
name="417959"></a><font size="-1"> String query = "SELECT * FROM emp";
</font><a
name="417960"></a><font size="-1">
</font><a name="417961"></a><font size="-1"> try {
</font><a
name="417962"></a><font size="-1">
</font><a name="417963"></a><font size="-1"> // 加载 jdbc-odbc 桥驱动程序
</font><a
name="417964"></a><font size="-1">
</font><a name="417965"></a><font size="-1"> Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");
</font><a
name="417966"></a><font size="-1">
</font><a name="417967"></a><font size="-1"> DriverManager.setLogStream(System.out);
</font><a
name="417968"></a><font size="-1">
</font><a name="417969"></a><font size="-1"> // 试图与某一驱动程序连接。 每个
</font><a
name="417970"></a><font size="-1"> // 已注册驱动程序都将被加载,直到
</font><a
name="417971"></a><font size="-1"> // 找到一个可以处理此 URL 的驱动程序
</font><a
name="417972"></a><font size="-1">
</font><a name="417973"></a><font size="-1"> Connection con = DriverManager.getConnection (
</font><a
name="417974"></a><font size="-1"> url, "my-user", "my-passwd");
</font><a
name="417975"></a><font size="-1">
</font><a name="417976"></a><font size="-1"> // 如果不能连接,则已
</font><a
name="417977"></a><font size="-1"> // 抛出异常。 因此,如果进入这一步,
</font><a
name="417978"></a><font size="-1"> // 则已成功连接到 URL
</font><a name="417979"></a><font
size="-1">
</font><a name="417980"></a><font size="-1"> // 查询并显示连接生成的
</font><a
name="417981"></a><font size="-1"> // 警告。
</font><a name="417982"></a><font size="-1">
</font><a
name="417983"></a><font size="-1"> checkForWarning (con.getWarnings ());
</font><a
name="417984"></a><font size="-1">
</font><a name="417985"></a><font size="-1"> // 获得 DatabaseMetaData 对象并显示
</font><a
name="417986"></a><font size="-1"> // 一些有关连接的信息
</font><a name="417987"></a><font
size="-1">
</font><a name="417988"></a><font size="-1"> DatabaseMetaData dma = con.getMetaData ();
</font><a
name="417989"></a><font size="-1">
</font><a name="417990"></a><font size="-1"> System.out.println("\nConnected to " + dma.getURL());
</font><a
name="417991"></a><font size="-1"> System.out.println("Driver " +
</font><a
name="417992"></a><font size="-1"> dma.getDriverName());
</font><a name="417993"></a><font
size="-1"> System.out.println("Version " +
</font><a name="417994"></a><font
size="-1"> dma.getDriverVersion());
</font><a name="417995"></a><font size="-1"> System.out.println("");
</font><a
name="417996"></a><font size="-1">
</font><a name="417997"></a><font size="-1"> // 创建一个 Statement 对象,使我们可以向
</font><a
name="417998"></a><font size="-1"> // 驱动程序提交 SQL 语句
</font><a name="417999"></a><font
size="-1">
</font><a name="418000"></a><font size="-1"> Statement stmt = con.createStatement ();
</font><a
name="418001"></a><font size="-1">
</font><a name="418002"></a><font size="-1"> // 提交查询,创建 ResultSet 对象
</font><a
name="418003"></a><font size="-1">
</font><a name="418004"></a><font size="-1"> ResultSet rs = stmt.executeQuery (query);
</font><a
name="418005"></a><font size="-1">
</font><a name="418006"></a><font size="-1"> // 显示结果集中的所有列和行
</font><a
name="418007"></a><font size="-1">
</font><a name="418008"></a><font size="-1"> dispResultSet (rs);
</font><a
name="418009"></a><font size="-1">
</font><a name="418010"></a><font size="-1"> // 关闭结果集
</font><a
name="418011"></a><font size="-1">
</font><a name="418012"></a><font size="-1"> rs.close();
</font><a
name="418013"></a><font size="-1">
</font><a name="418014"></a><font size="-1"> // 关闭语句
</font><a
name="418015"></a><font size="-1">
</font><a name="418016"></a><font size="-1"> stmt.close();
</font><a
name="418017"></a><font size="-1">
</font><a name="418018"></a><font size="-1"> // 关闭连接
</font><a
name="418019"></a><font size="-1">
</font><a name="418020"></a><font size="-1"> con.close();
</font><a
name="418021"></a><font size="-1"> }
</font><a name="418022"></a><font size="-1"> catch (SQLException ex) {
</font><a
name="418023"></a><font size="-1">
</font><a name="418024"></a><font size="-1"> // 生成 SQLException。 捕获它并
</font><a
name="418025"></a><font size="-1"> // 显示错误信息。 注意
</font><a name="418026"></a><font
size="-1"> // 可能有多个错误对象链接
</font><a name="418027"></a><font size="-1"> // 在一起
</font><a
name="418028"></a><font size="-1">
</font><a name="418029"></a><font size="-1"> System.out.println ("\n*** SQLException caught ***\n");
</font><a
name="418030"></a><font size="-1">
</font><a name="418031"></a><font size="-1"> while (ex != null) {
</font><a
name="418032"></a><font size="-1"> System.out.println ("SQLState: " +
</font><a
name="418033"></a><font size="-1"> ex.getSQLState ());
</font><a name="418034"></a><font
size="-1"> System.out.println ("Message: " + ex.getMessage ());
</font><a
name="418036"></a><font size="-1"> System.out.println ("Vendor: " +
</font><a
name="418037"></a><font size="-1"> ex.getErrorCode ());
</font><a name="418038"></a><font
size="-1"> ex = ex.getNextException ();
</font><a name="418039"></a><font size="-1"> System.out.println ("");
</font><a
name="418040"></a><font size="-1"> }
</font><a name="418041"></a><font size="-1"> }
</font><a
name="418042"></a><font size="-1"> catch (java.lang.Exception ex) {
</font><a name="418043"></a><font
size="-1">
</font><a name="418044"></a><font size="-1"> // 获得其它类型异常 并转储。
</font><a
name="418045"></a><font size="-1">
</font><a name="418046"></a><font size="-1"> ex.printStackTrace ();
</font><a
name="418047"></a><font size="-1"> }
</font><a name="418048"></a><font size="-1">}
</font><a
name="418049"></a><font size="-1">
</font><a name="418050"></a><font size="-1">//-------------------------------------------------------------------
</font><a
name="418051"></a><font size="-1">// checkForWarning
</font><a name="418052"></a><font
size="-1">// 查询并显示警告。 如果存在警告则返回
</font><a name="418053"></a><font
size="-1">// 真
</font><a name="418054"></a><font size="-1">//-------------------------------------------------------------------
</font><a
name="418055"></a><font size="-1">
</font><a name="418320"></a><font size="-1">private static boolean checkForWarning (SQLWarning warn)
</font><a
name="418321"></a><font size="-1"> throws SQLException {
</font><a name="418322"></a><font
size="-1"> boolean rc = false;
</font><a name="418060"></a><font size="-1">
</font><a
name="418061"></a><font size="-1"> // 如果给定了 SQLWarning 对象,则显示
</font><a
name="418062"></a><font size="-1"> // 警告消息。 注意可能有
</font><a name="418063"></a><font
size="-1"> // 多个警告链接在一起
</font><a name="418064"></a><font size="-1">
</font><a
name="418065"></a><font size="-1"> if (warn != null) {
</font><a name="418066"></a><font
size="-1"> System.out.println ("\n *** Warning ***\n");
</font><a name="418067"></a><font
size="-1"> rc = true;
</font><a name="418068"></a><font size="-1"> while (warn != null) {
</font><a
name="418069"></a><font size="-1"> System.out.println ("SQLState: " +
</font><a
name="418070"></a><font size="-1"> warn.getSQLState ());
</font><a name="418071"></a><font
size="-1"> System.out.println ("Message: " +
</font><a name="418072"></a><font
size="-1"> warn.getMessage ());
</font><a name="418073"></a><font size="-1"> System.out.println ("Vendor: " +
</font><a
name="418074"></a><font size="-1"> warn.getErrorCode ());
</font><a name="418075"></a><font
size="-1"> System.out.println ("");
</font><a name="418076"></a><font size="-1"> warn = warn.getNextWarning ();
</font><a
name="418077"></a><font size="-1"> }
</font><a name="418078"></a><font size="-1"> }
</font><a
name="418079"></a><font size="-1"> return rc;
</font><a name="418080"></a><font size="-1">}
</font><a
name="418081"></a><font size="-1">
</font><a name="418082"></a><font size="-1">//-------------------------------------------------------------------
</font><a
name="418083"></a><font size="-1">// dispResultSet
</font><a name="418084"></a><font
size="-1">// 显示给定结果集中的所有列和行
</font><a name="418085"></a><font
size="-1">//-------------------------------------------------------------------
</font><a
name="418086"></a><font size="-1">
</font><a name="418087"></a><font size="-1">private static void dispResultSet (ResultSet rs)
</font><a
name="418088"></a><font size="-1"> throws SQLException
</font><a name="418089"></a><font
size="-1">{
</font><a name="418090"></a><font size="-1"> int i;
</font><a name="418091"></a><font
size="-1">
</font><a name="418092"></a><font size="-1"> // 获得 ResultSetMetaData。 它将用于
</font><a
name="418093"></a><font size="-1"> // 列标题
</font><a name="418094"></a><font size="-1">
</font><a
name="418095"></a><font size="-1"> ResultSetMetaData rsmd = rs.getMetaData ();
</font><a
name="418096"></a><font size="-1">
</font><a name="418097"></a><font size="-1"> // 获得结果集中的列数
</font><a
name="418098"></a><font size="-1">
</font><a name="418099"></a><font size="-1"> int numCols = rsmd.getColumnCount ();
</font><a
name="418100"></a><font size="-1">
</font><a name="418101"></a><font size="-1"> // 显示列标题
</font><a
name="418102"></a><font size="-1">
</font><a name="418103"></a><font size="-1"> for (i=1; i<=numCols; i++) {
</font><a
name="418104"></a><font size="-1"> if (i > 1) System.out.print(",");
</font><a
name="418105"></a><font size="-1"> System.out.print(rsmd.getColumnLabel(i));
</font><a
name="418106"></a><font size="-1"> }
</font><a name="418107"></a><font size="-1"> System.out.println("");
</font><a
name="418108"></a><font size="-1">
</font><a name="418109"></a><font size="-1"> // 显示数据并获取它,直到结果集末尾
</font><a
name="418110"></a><font size="-1">
</font><a name="418111"></a><font size="-1"> boolean more = rs.next ();
</font><a
name="418112"></a><font size="-1"> while (more) {
</font><a name="418113"></a><font size="-1">
</font><a
name="418114"></a><font size="-1"> // 在每列中循环获得
</font><a name="418115"></a><font
size="-1"> // 并显示列数据
</font><a name="418116"></a><font size="-1">
</font><a
name="418117"></a><font size="-1"> for (i=1; i<=numCols; i++) {
</font><a name="418118"></a><font
size="-1"> if (i > 1) System.out.print(",");
</font><a name="418119"></a><font
size="-1"> System.out.print(rs.getString(i));
</font><a name="418120"></a><font size="-1"> }
</font><a
name="418121"></a><font size="-1"> System.out.println("");
</font><a name="418122"></a><font
size="-1">
</font><a name="418123"></a><font size="-1"> // 获取结果集的下一行
</font><a
name="418124"></a><font size="-1">
</font><a name="418125"></a><font size="-1"> more = rs.next ();
</font><a
name="418126"></a><font size="-1"> }
</font><a name="418128"></a><font size="-1">}
</font></pre>
</ul>
<pre><a name="418277"></a><font size="-1">}
</font></pre>
<p><br>
</p>
<hr>
<font size="-1"><a href="introTOC.doc.html">
<p>目录</a> | <a href="mapping.doc.html">上一页</a> | <a href="bridge.doc.html">下一页</a>
</font></p>
<hr>
<address>
<a href="mailto:jdbc@wombat.eng.sun.com">jdbc@wombat.eng.sun.com</a> 或 <a
href="mailto:jdbc-odbc@wombat.eng.sun.com">jdbc-odbc@wombat.eng.sun.com</a>
</address>
<a href="copyright.doc.html"><font size="-1"><i>
<p>版权所有 © 1996, 1997 Sun Microsystems, Inc. 保留所有权利</i></font>。</a><!-- HTML generated by dkramer on March 14, 1997 -->
</p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -