用jdbc-odbc桥接方式连接数据库总是连接不成功,也不知道哪出了问题?下面是数据库连接
DatabaseCon.java文件和用来测试的testBean.jsp:
package test.db;
//import java.io.*;
import java.sql.*;
public class DatabaseCon  {
  public Connection con;
  public String URL = "jdbc:odbc:cdshop";
  public String Message;
  public boolean connection()   {
    try{
      //加载JDBC-ODBC桥驱动程序
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    }
    catch(ClassNotFoundException ex){
      Message=ex.getMessage();
      System.exit(-1);
    }
    try{
      //试图通过JDBC-ODBC桥建立一个与myBooks数据源的连接
         con = DriverManager.getConnection(URL);
       //数据库连接成功
       return true;
    }
    catch(SQLException ex){
      Message=ex.getMessage();
      return false;
    }
  }
  //关闭数据库连接
  public boolean close(){
    try{
           con.close();
          return true;
    }
     catch(Exception ex){
          Message=ex.getMessage();
          return false;
      }
  }
  public ResultSet exeSQL(String sqlstr){
  try{
      this.connection();
      Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
      ResultSet rs=stmt.executeQuery(sqlstr);
      return rs;
  } catch(Exception ex){
    Message=ex.getMessage();
 }
  return null;
}
  public String getString(ResultSet rs,String str)
  {
  try
  {
  return rs.getString(str);
  }catch(Exception ex)
  {
  Message=ex.getMessage();
  }
  return null;
  
  }
}
testBean.jsp:<%@ page language="java"  pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>测试数据库连接Bean</title>
    
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
  </head>
  
 
   <%@ page contentType="text/html;charset=GB2312" %>
   <%@ page import="java.sql.*"%> 
 
<jsp:useBean id="dbBean" scope="session" class="test.db.DatabaseCon"/>
<body>
<%  String sql="select*from shop_user";
ResultSet rs=dbBean.exeSQL(sql);

String str;
try
{   out.print("aaa");
while(rs.next())
{   out.print("aaa");
str=rs.getString("PassWord");
%>
<%=rs.getString("UserName")%>-><%=str%><br>
<%
}}catch(Exception ex)
{    out.print("aaa");
out.print(ex.getMessage());
}

%>
  </body>
</html>
在下已经建好了数据库,测试页面总是显示null,望朋友们指点一下,在下将感激不尽!!!

解决方案 »

  1.   

    String   sql="select*from   shop_user"; 
    应该写成String   sql="select PassWord from   shop_user"; 
      

  2.   

      str=rs.getString("PassWord");  LZ 在此处是可以这样根据数据库的列名来获取对应字段的值的。  看了下,数据库链接没有什么问题 ,一是检查下你的 shop_user 表有没有数据或者是表明是否写错,二是检查 rs.getString("PassWord");  这里的列名是否和数据库中对应的的字段名称一致。  如果这些都没有问题的话,那就是你的游标滚动有问题。http://hi.baidu.com/batxut/blog/item/a8f6c42a22f1b12dd42af1dc.html这篇文章有你所用到游标的解释,希望对你有帮助。。
      

  3.   

    Ghost_520 :
    在下好象知道了问题出在了哪里,在下建立的表中的字段顺序为UserName,PassWord,如果在下按顺序访问,既先
    rs.getString("UserName")然后在rs.getString("PassWord")这样的话,就不会出现什么问题,如果访问的顺序颠倒,就回抛出异常;
    不知道在下理解的对不?
      

  4.   


      你的理解是对的,如下这段话是从 Java API 中摘录下的一段话:  ResultSet 接口提供用于从当前行检索列值的获取方法(getBoolean、getLong 等)。可以使用列的索引编号或列的名称检索值。一般情况下,使用列索引较为高效。列从 1 开始编号。为了获得最大的可移植性,应该按从左到右的顺序读取每行中的结果集列,而且每列只能读取一次。  你先将游标定位到 Password ,再定位到 UserName 当然是不行的啦(至少我还没找到方法解决)。  不过就算将顺序改过来还是不行,我把你的程序运行了一遍,找了半个多小时才找出问题来。   String sql="select*from shop_user";   此处写成 : select * from shop_user   将 "*" 两边的空格写出来,具体为什么要这样,我也有点不清楚。我想是 Statement 在连接数据库时要将 SQL 分解出来吧。  这些都改正过来,你的程序就可以正常运行出来了吧!