好惨啊。看来大家都不喜欢看代码啊。呜呜,只好再精简一点。如果分数不够的话,可以再加。String numSql = "SELECT COUNT(*) FROM daniel WHERE NAMEID = " + nameID + ";";
resultSet = statement.executeQuery(numSql);先帮我看一下,这句话有什么简单的错误么?nameID是int格式,在Access表中,是Number类型。另外,该表有四万多条记录,你觉得会不会影响到查询?因为是Access

解决方案 »

  1.   

    看上去没什么问题,不过java里面好像不用给SQL后面加分号
      

  2.   

    我也看着String numSql = "SELECT COUNT(*) FROM daniel WHERE NAMEID = " + nameID + ";"; 别扭
    换成String numSql = "SELECT COUNT(*) FROM daniel WHERE NAMEID = '" + nameID + "'";另外,把报出的错误贴出来
      

  3.   

    To : qiri07(脚踏实地,从2003年开始)
    加分号习惯了,总是觉得严谨一点好。
    另外,NAMEID是一个NUMBER类型的字段, 而nameID是整数型,需要加''么?
      

  4.   

    java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 无效的游标状态
            at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6879)
            at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7036)
            at sun.jdbc.odbc.JdbcOdbc.SQLGetDataInteger(JdbcOdbc.java:3766)
            at sun.jdbc.odbc.JdbcOdbcResultSet.getDataInteger(JdbcOdbcResultSet.java:5501)
            at sun.jdbc.odbc.JdbcOdbcResultSet.getInt(JdbcOdbcResultSet.java:567)
            at Search.getStd(Search.java:62)
            at LookUp.main(LookUp.java:35)
      

  5.   

    看了半天,SQL语句应该没有问题;
    建议在Access测试一下你的SQL语句,
    如果正常的话,可以修正语句
    createStatement(int resultSetType, int resultSetConcurrency) 
    试一下
      

  6.   

    String numSql = "SELECT COUNT(*) as count FROM daniel WHERE NAMEID = '" + nameID + "'";
    resultSet = statement.executeQuery(numSql);
    while(statement.next()){
        numOfRecords = resultSet.getInt("count");
    }这样试验一下
      

  7.   

    写错了,应该是:
    if(resultSet.next())
        numOfRecords = resultSet.getInt("count");
    因为只有一条记录,所以可以用if,但是必须先.next
    和while(resultSet.next()) 
        numOfRecords = resultSet.getInt("count");
    是一样的
      

  8.   

    不好意思,别名好像不能用关键字,刚才没有注意,你可以随便写一个的。也可以用
    String numSql = "SELECT COUNT(*) FROM daniel WHERE NAMEID = '" + nameID + "'";
    resultSet = statement.executeQuery(numSql);
    while(resultSet.next()){
        numOfRecords = resultSet.getInt(1);
    }
    这样,就不会有错误了的
      

  9.   

    Hi, dear friend,I have tried what you've said and found it still doesn't work.java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 无效的游标状态
            at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6879)
            at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7036)
            at sun.jdbc.odbc.JdbcOdbc.SQLGetDataInteger(JdbcOdbc.java:3766)
            at sun.jdbc.odbc.JdbcOdbcResultSet.getDataInteger(JdbcOdbcResultSet.java:5501)
            at sun.jdbc.odbc.JdbcOdbcResultSet.getInt(JdbcOdbcResultSet.java:567)
            at Search.getStd(Search.java:62)
            at LookUp.main(LookUp.java:35)
    ---What is the meaning of this exception?
      

  10.   

    try{
             resultSet.first();    --->  resultSet.next();
    numOfRecords = resultSet.getInt(1);
    .........
      

  11.   

    你在resultSet.getInt()之前,必须先resultSet.next(),通俗说就是使游标到达某个位置。
    否则就会“无效的游标状态”
      

  12.   

    试一下下面这个:
    String numSql = "SELECT COUNT(*) as count FROM daniel WHERE NAMEID =?";
    preStmt=conn.prepareStatement(numStr);
    preStmt.setString(1,fdValue);
    resultSet = preStmt.executeQuery(numSql);
      

  13.   

    String numSql = "SELECT COUNT(*) FROM daniel WHERE NAMEID = '" + nameID + "'";
    resultSet = statement.executeQuery(numSql);
    while(resultSet.next()){
        numOfRecords = resultSet.getInt(1);
    }----------------------------------------
    这个resultSet.next()开始时我也写的,后来调试的时候发现不行,于是就去掉了看行不行,可是还是不行啊。另外好像 NAMEID = '"+nameID+ "'";不应该有单引号,因为我要查询的是NUMBER字型(不过其中都是integer);此外,楼上的preparedStatement我也写过了,好像还是同样的问题
      

  14.   

    有没有人知道这方面的问题?另外对于Access的并发访问会有什么问题?
      

  15.   

    我觉得得到结果集以后rest.next()是必须的
    试着使用COUNT(oneColumn)试试,不用COUNT(*),看看有什么结果
      

  16.   

    问题解决了。。真是粗心大意啊。忘了jdbcodbc桥接是不支持我的操作的。赫赫。