下面是java操作ACCESS的部分代码,很简单,但我却遇到很我很郁闷的问题,我不知道下面这两个方法中是不是哪出错了,我自己没看出来,我写了一个main函数,自己写sql语句然后自己写执行语句结果就没错,但当调用selectALL想完成access查询的时候就是用不了,restltset总为false,可是,selectAll中的执行语句与我在main中自己写的执行语句是一样的啊,为什么调用selectALL时就有错直接写就没错?
public String select(String sql,String table,String conditions,String group,String order)
{
if(table!=null)
{
sql=sql+" FROM "+table;
}
if(conditions!=null)
{
sql=sql+" WHERE "+conditions;
}
if(group!=null)
{
sql=sql+" GROUP BY "+group;
}
if(order!=null)
{
sql=sql+" ORDER BY "+order;
}
sql=sql+";";
return sql;
}// Function Query SELECT * FROM ...
public ResultSet selectAll(String table,String conditions,String group,String order)
{
String sql=" SELECT * ";
if(table!=null)
{
sql=select(sql,table,conditions,group,order);
System.out.println(sql);
try
{
//出错好象就在下面两句     prest=conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
result=prest.executeQuery();
System.out.println(result.next());//此处打印结果为false
}
catch(Exception e)
{
e.printStackTrace();
}
  }
else
{
   result=null;
  }
return result;
}下面为全部代码:
package test;
import java.sql.*;public class ProjectConnectionBean
{
  static String jdbcDriver="sun.jdbc.odbc.JdbcOdbcDriver";
  String jdbcURL="jdbc:odbc:bus"; 
  String userName=null; 
  String password=null;   private String dbs=null;
  private Connection conn=null;
  private ResultSet result=null;
  private PreparedStatement prest=null;
  
  static
  {
  try {
  Class.forName(jdbcDriver);
} catch (Exception e) {
e.printStackTrace();
}
  }
public ProjectConnectionBean()
{
}// Procedure setConnection to the Database
public Connection setConnection()
{
try
{

conn=DriverManager.getConnection(jdbcURL,null,null);
}
catch(Exception e)
{
System.out.println(e.toString());
}
return conn;
}
public String select(String sql,String table,String conditions,String group,String order)
{
if(table!=null)
{
sql=sql+" FROM "+table;
}
if(conditions!=null)
{
sql=sql+" WHERE "+conditions;
}
if(group!=null)
{
sql=sql+" GROUP BY "+group;
}
if(order!=null)
{
sql=sql+" ORDER BY "+order;
}
sql=sql+";";
return sql;
}// Function Query SELECT * FROM ...
public ResultSet selectAll(String table,String conditions,String group,String order)
{
String sql=" SELECT * ";
if(table!=null)
{
sql=select(sql,table,conditions,group,order);
System.out.println(sql);
try
{
//出错好象就在下面两句     prest=conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
result=prest.executeQuery();
System.out.println(result.next());//此处打印结果为false
}
catch(Exception e)
{
e.printStackTrace();
}
  }
else
{
   result=null;
  }
return result;
}
//main函数部分
public static void main(String[] args) throws SQLException {
ProjectConnectionBean pro=new ProjectConnectionBean();
pro.conn=pro.setConnection();
ResultSet rs=null;
String sql="select * from bus_new;";
String sql2=pro.select("select * ", "bus_new", null, null, null);
////////////////////这里是直接调用////////////
         try {
pro.prest=pro.conn.prepareStatement(sql2,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
} catch (Exception e) {
// TODO: handle exception
}
        rs=pro.prest.executeQuery();  
///////////////////////////////////////////////////////
/////////下面是用selectALL调用,但返回的ResultSet,打印rs的时候可以打印出对象可是调用rs.next()的时候就是空,数据库里面//有内容的呀,用上面的方法就完全可以。
//rs=pro.selectAll("bus_new", null, null, null);
System.out.println(pro.conn);
System.out.println(rs.next()); while(rs.next())

      System.out.print(rs.getString("Name"));

}
}
请高手看看我到底错哪了,哪短路了。

解决方案 »

  1.   

    selectALL方法里面
    prest=conn.prepareStatement
    conn 好像没实例吧,也没看见传进去
      

  2.   

     prest=conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); 
    应该没有前滚或什么的吧 这个ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE 去掉
      

  3.   

    我知道问题所在了。郁闷啊~~原因在于
    public ResultSet selectAll(String table,String conditions,String group,String order)
    {
    String sql=" SELECT * "; 这里面select前多了个空格~!
    而自己写的
    public static void main(String[] args) throws SQLException {
    ProjectConnectionBean pro=new ProjectConnectionBean();
    pro.conn=pro.setConnection();
    ResultSet rs=null;
    String sql="select * from bus_new;"; 这里面没有空格,郁闷就一个空格让我找半天
    谢谢大家了~