下面是一个JAVA程序,可以正常连接数据库,输入也正常。总之一切正常。
package n;
import java.sql.*;public class M
{
Connection conn = null;
String myStr;
ResultSet rs = null;
public void execute() 

  String sql = "select * from b";
  String DBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
  String url = "jdbc:odbc:MS Access Database;DBQ=d:\\b.mdb";  try 
  { 
  Class.forName(DBDriver).newInstance(); 
  conn = DriverManager.getConnection(url); 
  Statement stmt = conn.createStatement(); 
  rs = stmt.executeQuery(sql);   } 
  catch(Exception e){}
}public String result()
{
  try{
  while(rs.next())
    myStr = rs.getString(1);
  }
  catch(Exception e){}
  return myStr;

}
——下面是我的bean,跟上面的JAVA程序几乎是一样的,只是把最后输出结果的部分转移到JSP里了。——
package n;
import java.sql.*;public class M
{
Connection conn = null;
String myStr;
ResultSet rs = null;
public void execute() 

  String sql = "select * from b";
  String DBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
  String url = "jdbc:odbc:MS Access Database;DBQ=d:\\b.mdb";  try 
  { 
  Class.forName(DBDriver).newInstance(); 
  conn = DriverManager.getConnection(url); 
  Statement stmt = conn.createStatement(); 
  rs = stmt.executeQuery(sql);   //这里的调用函数该为jsp去调用
  } 
  catch(Exception e){}
}public String result()
{
  try{
  while(rs.next())
    myStr = rs.getString(1);
  }
  catch(Exception e){}
  return myStr;

}
————以下是我的jsp,只负责输出结果:————
<%@ page import="java.sql.*" %><jsp:useBean id = "myBean" class = "n.M" scope = "application" />
<%
out.println(myBean.result());
%>
输出到网页上的结果却是null,而不是数据库里的内容(数据库里只有一条信息),可我的JAVA程序和bean几乎是一样的,简直太迷茫了,请各位指点迷津。

解决方案 »

  1.   

    谢谢楼上,是我马虎了,但是改成下面这样应该就执行了吧,可结果仍然是空。
    public String result()
    {
      execute();//这样调用应该没问题吧。
      try{
      while(rs.next())
        myStr = rs.getString(1);
      }
      catch(Exception e){}
      return myStr;

      

  2.   

    这么改:
    package n;
    import java.sql.*;public class M
    {
    Connection conn = null;
    String myStr = "";
    ResultSet rs = null;public String result()
    {
      String sql = "select * from b";
      String DBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
      String url = "jdbc:odbc:MS Access Database;DBQ=d:\\b.mdb";  try 
      { 
      Class.forName(DBDriver).newInstance(); 
      conn = DriverManager.getConnection(url); 
      Statement stmt = conn.createStatement(); 
      rs = stmt.executeQuery(sql); 
      while(rs.next()){
         myStr = rs.getString(1); //这里这么写只能得到最后一条记录,如果想得到全部,建议返回一个resultset,或Vector
      }
      } 
      catch(Exception e){}  return myStr;

    }
      

  3.   

    在给你一个连接mysql的javabean
    我用的://现在的数据库IP等信息是写死在程序中的,应该改成从配置文件中取得!
    package JavaBean;import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import com.mysql.jdbc.Statement;public class DBConn {
    private static Connection conn = null;
    public DBConn(){
    try{
            Class.forName("org.gjt.mm.mysql.Driver").newInstance(); 
            conn=DriverManager.getConnection("jdbc:mysql://localhost/metrics","root","123456"); 
    }catch(Exception e){
    System.out.println("Connect error");
    System.out.println(e);

    }
    } public static ResultSet ExecuteQuery(String sql){
    ResultSet returnRs = null;
    try{
            Statement stmt=(Statement) conn.createStatement(); 
            returnRs = stmt.executeQuery(sql);
    }catch(Exception e){
    System.out.println("Execute Query error");
    System.out.println(e);
    }

    return returnRs;
    }

    public int ExecuteUpdate(String sql){
    //返回值为影响数据库记录的数量。如:返回为0,有可能更新或插入不成功。如果同时修改成功100条记录,则返回结果为100
    int r = 0;
    try{
    Statement stmt = (Statement)conn.createStatement();
    r = stmt.executeUpdate(sql);
    System.out.println("execute result:"+r);
    }catch(Exception e){
    System.out.println("ExecuteUpdate error ");
    System.out.println(e);

    }

    return r;
    }
    public void closeDB() throws SQLException{
    conn.close();
    }


    // public static void main(String[] args) {
    // try { 
    //
    ////            Class.forName("org.gjt.mm.mysql.Driver").newInstance(); 
    ////            Connection con22=DriverManager.getConnection("jdbc:mysql://localhost/metrics","root","123456"); 
    ////            Statement sql=(Statement) con22.createStatement(); 
    ////            ResultSet rs = sql.executeQuery("select * from ts_role");
    ////            while (rs.next())
    ////            {
    ////             System.out.print(rs.getString("M1_ROLE"));            
    ////            }
    //
    //
    //        } 
    //        catch (Exception ex) { 
    //            System.out.println(ex);
    //        } 
    // } }
      

  4.   

    Statement stmt 自动释放掉了
    吧Statement stmt  申明成全局变量
      

  5.   

    PlacidlyLive()兄:我直接复制了你的程序,编译运行后这次连null都不显示了,只剩一个白板zhangjianying兄:我把Statement stmt声名为全局变量了,可结果仍然只是null啊PlacidlyLive()朋友:谢谢你的程序,等我连接完access之后就要学习关系数据库了,你的程序对我帮助很大,结贴的时候帮助我的朋友我都会多给些分以示我的感谢的。
      

  6.   

    "PlacidlyLive()朋友:谢谢你的程序,等我连接完access之后就要学习关系数据库了,你的程序对我帮助很大,结贴的时候帮助我的朋友我都会多给些分以示我的感谢的。
    "access就是关系型数据库啊。
    要想学非关系型的可以看看LDAP。我也有例子。呵呵
      

  7.   

    是不是没按javaBean的规范写啊?
    试试把方法改成:
    public String getResult(){
    ......................
    }
    可以了吗?
      

  8.   

    谢谢各位帮忙,问题解决了,把下面这句改一下就正确了
    String url = "jdbc:odbc:MS Access Database;DBQ=d:\\b.mdb";
    改为:
    String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=d:\\books.mdb";
    可是我现在也不知道为什么,如果有朋友类似问题的朋友,可以借鉴一下,结贴给分。
      

  9.   

    hfwguitar() 
    access就是关系型数据库啊。
    要想学非关系型的可以看看LDAP。我也有例子。呵呵
    ————————————————————————————
    晕,我对数据库不了解,前几天去面试了一家公司,那个技术问我用过什么数据库,我当时有点发蒙,就说我只用过access,结果那个人说:我说的是关系型数据库,比如oracle,SQLServer这些……当时我就想,原来access不是关系型的数据库啊,可回来翻书,说关系数据库是基于表的,可access不就是基于表的吗,我这一直犯嘀咕呢,你一句话算点拨我了,这问题,我都不好意思直接问
      

  10.   

    再晕一个,复制名字的时候搞错了,应该是说给PlacidlyLive() 兄的,这几天搞的我头都大了。有灌水嫌疑,闪了