好惨啊。看来大家都不喜欢看代码啊。呜呜,只好再精简一点。如果分数不够的话,可以再加。String numSql = "SELECT COUNT(*) FROM daniel WHERE NAMEID = " + nameID + ";";
resultSet = statement.executeQuery(numSql);先帮我看一下,这句话有什么简单的错误么?nameID是int格式,在Access表中,是Number类型。另外,该表有四万多条记录,你觉得会不会影响到查询?因为是Access
resultSet = statement.executeQuery(numSql);先帮我看一下,这句话有什么简单的错误么?nameID是int格式,在Access表中,是Number类型。另外,该表有四万多条记录,你觉得会不会影响到查询?因为是Access
换成String numSql = "SELECT COUNT(*) FROM daniel WHERE NAMEID = '" + nameID + "'";另外,把报出的错误贴出来
加分号习惯了,总是觉得严谨一点好。
另外,NAMEID是一个NUMBER类型的字段, 而nameID是整数型,需要加''么?
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)
建议在Access测试一下你的SQL语句,
如果正常的话,可以修正语句
createStatement(int resultSetType, int resultSetConcurrency)
试一下
resultSet = statement.executeQuery(numSql);
while(statement.next()){
numOfRecords = resultSet.getInt("count");
}这样试验一下
if(resultSet.next())
numOfRecords = resultSet.getInt("count");
因为只有一条记录,所以可以用if,但是必须先.next
和while(resultSet.next())
numOfRecords = resultSet.getInt("count");
是一样的
String numSql = "SELECT COUNT(*) FROM daniel WHERE NAMEID = '" + nameID + "'";
resultSet = statement.executeQuery(numSql);
while(resultSet.next()){
numOfRecords = resultSet.getInt(1);
}
这样,就不会有错误了的
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?
resultSet.first(); ---> resultSet.next();
numOfRecords = resultSet.getInt(1);
.........
否则就会“无效的游标状态”
String numSql = "SELECT COUNT(*) as count FROM daniel WHERE NAMEID =?";
preStmt=conn.prepareStatement(numStr);
preStmt.setString(1,fdValue);
resultSet = preStmt.executeQuery(numSql);
resultSet = statement.executeQuery(numSql);
while(resultSet.next()){
numOfRecords = resultSet.getInt(1);
}----------------------------------------
这个resultSet.next()开始时我也写的,后来调试的时候发现不行,于是就去掉了看行不行,可是还是不行啊。另外好像 NAMEID = '"+nameID+ "'";不应该有单引号,因为我要查询的是NUMBER字型(不过其中都是integer);此外,楼上的preparedStatement我也写过了,好像还是同样的问题
试着使用COUNT(oneColumn)试试,不用COUNT(*),看看有什么结果