这里是出错纪录:
An unexpected exception has been detected in native code outside the VM.
Unexpected Signal : EXCEPTION_ACCESS_VIOLATION occurred at PC=0x10006e28
Function name=SQLExtendedFetch
Library=C:\WINNT\System32\myodbc.dllCurrent Java thread:
at sun.jdbc.odbc.JdbcOdbc.fetchScroll(Native Method)
at sun.jdbc.odbc.JdbcOdbc.SQLFetchScroll(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcResultSet.calculateRowCount(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcResultSet.initialize(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcStatement.getResultSet(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(Unknown Source)
at QueryTimerTask.run(Ontimesendwlottery.java:73)
at java.util.TimerThread.mainLoop(Unknown Source)
at java.util.TimerThread.run(Unknown Source)Dynamic libraries:
0x00400000 - 0x00405000  C:\WINNT\system32\java.exe
0x77F80000 - 0x77FFB000  C:\WINNT\System32\ntdll.dll
0x77D90000 - 0x77DEB000  C:\WINNT\system32\ADVAPI32.dll
0x77E60000 - 0x77F34000  C:\WINNT\system32\KERNEL32.DLL
0x77D20000 - 0x77D90000  C:\WINNT\system32\RPCRT4.DLL
0x78000000 - 0x78046000  C:\WINNT\system32\MSVCRT.dll
0x6D420000 - 0x6D4EF000  C:\Program Files\JavaSoft\JRE\1.3.1\bin\hotspot\jvm.dll
0x77DF0000 - 0x77E54000  C:\WINNT\system32\USER32.dll
0x77F40000 - 0x77F7C000  C:\WINNT\system32\GDI32.DLL
0x77530000 - 0x77560000  C:\WINNT\system32\WINMM.dll
0x75E00000 - 0x75E1A000  C:\WINNT\System32\IMM32.DLL
0x6D220000 - 0x6D227000  C:\Program Files\JavaSoft\JRE\1.3.1\bin\hpi.dll
0x6D3B0000 - 0x6D3BD000  C:\Program Files\JavaSoft\JRE\1.3.1\bin\verify.dll
0x6D250000 - 0x6D266000  C:\Program Files\JavaSoft\JRE\1.3.1\bin\java.dll
0x6D3C0000 - 0x6D3CD000  C:\Program Files\JavaSoft\JRE\1.3.1\bin\zip.dll
0x6D290000 - 0x6D29A000  C:\Program Files\JavaSoft\JRE\1.3.1\bin\JdbcOdbc.dll
0x1F7D0000 - 0x1F804000  C:\WINNT\system32\ODBC32.dll
0x76AF0000 - 0x76B2E000  C:\WINNT\system32\comdlg32.dll
0x77C50000 - 0x77C9A000  C:\WINNT\system32\SHLWAPI.DLL
0x77B30000 - 0x77BB9000  C:\WINNT\system32\COMCTL32.DLL
0x785C0000 - 0x78802000  C:\WINNT\system32\SHELL32.DLL
0x1F8C0000 - 0x1F8D6000  C:\WINNT\system32\odbcint.dll
0x1F940000 - 0x1F968000  C:\WINNT\System32\ODBCTRAC.dll
0x77A30000 - 0x77B26000  C:\WINNT\system32\ole32.dll
0x10000000 - 0x1004E000  C:\WINNT\System32\myodbc.dll
0x72DF0000 - 0x72E01000  C:\WINNT\System32\CTL3D32.dll
0x74FD0000 - 0x74FDA000  C:\WINNT\System32\WSOCK32.dll
0x74FB0000 - 0x74FC3000  C:\WINNT\System32\WS2_32.DLL
0x74FA0000 - 0x74FA8000  C:\WINNT\System32\WS2HELP.DLL
0x1F820000 - 0x1F83A000  C:\WINNT\system32\odbccp32.dll
0x777E0000 - 0x777E7000  C:\WINNT\system32\VERSION.dll
0x75950000 - 0x75956000  C:\WINNT\system32\LZ32.DLL
0x77800000 - 0x7780C000  C:\WINNT\System32\rnr20.dll
0x77960000 - 0x77984000  C:\WINNT\system32\DNSAPI.DLL
0x77300000 - 0x77313000  C:\WINNT\system32\iphlpapi.dll
0x774E0000 - 0x774E5000  C:\WINNT\system32\ICMP.DLL
0x772E0000 - 0x772F7000  C:\WINNT\system32\MPRAPI.DLL
0x750E0000 - 0x750F0000  C:\WINNT\system32\SAMLIB.DLL
0x75100000 - 0x7514F000  C:\WINNT\system32\NETAPI32.DLL
0x77BC0000 - 0x77BCF000  C:\WINNT\system32\SECUR32.DLL
0x75150000 - 0x75156000  C:\WINNT\system32\NETRAP.DLL
0x77930000 - 0x77959000  C:\WINNT\system32\WLDAP32.DLL
0x77990000 - 0x77A2B000  C:\WINNT\system32\OLEAUT32.DLL
0x77370000 - 0x7739E000  C:\WINNT\system32\ACTIVEDS.DLL
0x77340000 - 0x77362000  C:\WINNT\system32\ADSLDPC.DLL
0x777F0000 - 0x777FE000  C:\WINNT\system32\RTUTILS.DLL
0x77850000 - 0x778FB000  C:\WINNT\system32\SETUPAPI.DLL
0x77BF0000 - 0x77C4D000  C:\WINNT\system32\USERENV.DLL
0x774A0000 - 0x774D2000  C:\WINNT\system32\RASAPI32.DLL
0x77480000 - 0x77491000  C:\WINNT\system32\RASMAN.DLL
0x774F0000 - 0x77512000  C:\WINNT\system32\TAPI32.DLL
0x77320000 - 0x77339000  C:\WINNT\system32\DHCPCSVC.DLL
0x72C50000 - 0x72CD5000  C:\WINNT\system32\CLBCATQ.DLL
0x777A0000 - 0x777A8000  C:\WINNT\System32\winrnr.dll
0x777B0000 - 0x777B5000  C:\WINNT\system32\rasadhlp.dll
0x74F50000 - 0x74F6F000  C:\WINNT\system32\msafd.dll
0x74F90000 - 0x74F97000  C:\WINNT\System32\wshtcpip.dll
0x41230000 - 0x412AF000  C:\WINNT\System32\sqlsrv32.dll
0x41100000 - 0x4110C000  C:\WINNT\System32\SQLWOA.dll
0x76940000 - 0x76947000  C:\WINNT\system32\NDDEAPI.DLL
0x777C0000 - 0x777DD000  C:\WINNT\system32\WINSPOOL.DRV
0x73330000 - 0x73337000  C:\WINNT\system32\DBMSSOCN.DLL
0x75490000 - 0x75494000  C:\WINNT\system32\security.dll
0x782D0000 - 0x782EE000  C:\WINNT\system32\msv1_0.dll
0x77900000 - 0x77923000  C:\WINNT\system32\imagehlp.dll
0x72960000 - 0x7298D000  C:\WINNT\system32\DBGHELP.dll
0x687E0000 - 0x687EB000  C:\WINNT\system32\PSAPI.DLLLocal Time = Thu Aug 09 11:02:27 2001
Elapsed Time = 25
#
# The exception above was detected in native code outside the VM
#
# Java VM: Java HotSpot(TM) Client VM (1.3.1-b24 mixed mode)
#

解决方案 »

  1.   

    你的ID是数字 型的吗?
    如果是字符串的话,比较当然和数字不一样如果是数字型的那么应该修改为:
    where id >"+maxid+"........" 
      

  2.   

    是数字型的,但是假如比较之后,在表中有记录,就会很正常的得到结果
    而且,当数据库不用mysql时,用sql server时,也没有错阿
      

  3.   

    我改成了where id >"+maxid+"........"  结果还是一样
      

  4.   

    你的id是自己建的DB中的某一个表中的字段,
    还是使用系统数据库mysql,如果碰巧它是msyql自己的关键字。
    可能会有错
      

  5.   

    这个数据库,我只有读的权利,没有修改的权利
    还有别的可能吗,我觉得出错得很奇怪,假如是变量名有冲突,那当 在表中有纪录大于maxid
    时,也查询不出来阿,为什么出错只是在表中没有纪录大于maxid 时,才出错
      

  6.   

    fatpig521(瘦驼):
       努力,奋斗别的兄弟姐妹呢?
      

  7.   

    你把這句話中的order by id asc去掉試試
      

  8.   

    去掉 order by in asc之后,还是一样
      

  9.   

    我重新写了一个程序:
    public void fun(){
    try {
    System.out.println("the progrome begin!");
    Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");
    Connection conmysql = DriverManager.getConnection ("jdbc:odbc:Codedata", "manager", "111111");
    Statement stmtmysql = conmysql.createStatement (java.sql.ResultSet.TYPE_SCROLL_SENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
    ResultSet rsmysql;
    rsmysql = stmtmysql.executeQuery("select * from codedata where id =868");  // 在这里,当数据库中有868时,就完全正确,没有的时候,就
                     ~~~~~~~~~
    会出错,有人知道,是怎么回事吗。
    stmtmysql.close();
    conmysql.close();
    }
    catch (Exception e) {
    e.printStackTrace();
    }
      

  10.   

    Hey,
    你用的是什么 jdbc 驱动?
    驱动的类名是 org.gjt.mm.mysql.Driver 吗?
    如果是的话,把你的表结构贴出来,或许有人能帮你试一下。
    最后,这里是错误疑点,然而你可以确定出错点就在这句,而不是下面的语句吗?所以是不是把上下文的语句也贴出来?
    自己考虑考虑。
      

  11.   

    出错的整个程序是这样:
    import java.net.*;
    import java.io.*;
    import java.util.*;
    import java.sql.*;class  TestMysql
    {
    public static void main(String[] args) 
    {
    TestMysql test = new TestMysql();
    test.fun();
    System.out.println("Hello World!");
    }

    public void TestMysql(){
    } public void fun(){
    try {
    System.out.println("the progrome begin!");
    Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");
    Connection conmysql = DriverManager.getConnection ("jdbc:odbc:Codedata", "manager", "111111");
    Statement stmtmysql = conmysql.createStatement (java.sql.ResultSet.TYPE_SCROLL_SENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
    ResultSet rsmysql;
    rsmysql = stmtmysql.executeQuery("select * from codedata where id =868"); stmtmysql.close();
    conmysql.close();
    }
    catch (Exception e) {
    e.printStackTrace();
    }
    }
    }数据库的结构是:
    字段名 字段描述 数据类型 主键 可空 备注
    ID 记录ID INT UNSIGNED Yes
    SEQNUM 期号 INT UNSIGNED
    AREACODE 省市代码 INT UNSIGNED 为什么当 数据库中 有 868时,就是正确的,还能查询等等。
    没有时,就会出错!
      

  12.   

    你用的数据库是MySQL,使用Mysql的ODBC来连接查询,也没什么。我做了一个试验。
    在Linux下使用Mysql建立了一个数据库maxid,其中建立了一个表:test 只有一个
    字段id 插入了一些数据。按照你的条件查询,不会出错。
    我糊涂了。为什么?
      

  13.   

    兄弟们,问题解决了。原因是Statement stmtmysql = conmysql.createStatement (java.sql.ResultSet.TYPE_SCROLL_SENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
    只要把括号中的部分去掉,就行了。我不知道为什么。
    我还有疑问,为什么在不去掉括号中的部分时,查询不到结果就会出错。我知道括号内的东西代表了什么意思,而且,我也换过别的参数试过,都不行,我觉得他不会影响到访问阿。 哎,迷惑阿!好了,把分给了,来着有分,大家可以继续讨论为什么?
      

  14.   

    兄弟们,问题解决了。原因是Statement stmtmysql = conmysql.createStatement (java.sql.ResultSet.TYPE_SCROLL_SENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
    只要把括号中的部分去掉,就行了。我不知道为什么。
    我还有疑问,为什么在不去掉括号中的部分时,查询不到结果就会出错。我知道括号内的东西代表了什么意思,而且,我也换过别的参数试过,都不行,我觉得他不会影响到访问阿。 哎,迷惑阿!好了,把分给了,来着有分,大家可以继续讨论为什么?