java调用sqlite,报out.of.memory错误?

我的代码如下:[code="java"]
public class testSqlite {

/**
 * @param args
 */
public static void main(String[] args) {

    //String test =null;
      try
    {

    Class cls = Class.forName("org.sqlite.JDBC");
    System.out.println("cls is:"+cls);

    //String path=ReadEnv.getSqlitePath();
    //System.out.println("path is:"+"jdbc:sqlite:"+path);


    //Connection conn = DriverManager.getConnection("jdbc:sqlite:"+path);
    Connection conn = DriverManager.getConnection("jdbc:sqlite:"+"D:\\sqlite\\configbase");
    Statement stmt = conn.createStatement();
    ResultSet      result = stmt.executeQuery("select * from hostconfig where hostdc='0A'");
    //String test =null;
    while (result.next())
     {
     System.out.println("result is:" +result.getString(1));
     // test = result.getString(1);
     }
     result.close();
     stmt.close();
     conn.close();

  }
  catch(ClassNotFoundException e)
    {
       System.out.println("class is not found");
       e.printStackTrace();
    }
  catch(SQLException e)

  {

    e.printStackTrace();
 }




}

}

[/code]不知道啥原因,在unix环境下这代码到跑通了,在window下本机装了个sqlite却报out.of.memory错误。
[b]问题补充:[/b]
To sunson468:我是用的eclipse,驱动也加在应用程序的lib下,我用的是sqlitejdbc-v033-nested.jar驱动要设置Manifest吗,unix下为啥不用

3个回答

sqlitejdbc-v033-nested.jar驱动好像需要一个DLL动态链接库的?

你需要把那个DLL也加载的!

给你个方法:
1.IBM HeapAnalyser 工具分析下生成的DUMP文件;
(如何生成Dump文件,可参照:
-XX:HeapDumpPath=./java_pid.hprof
-XX:+HeapDumpOnOutOfMemoryError
JDK要求(1.4.19以上,或者参照
[url]http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp#DebuggingOptions[/url])
)

2.Connection的关闭,添加异常控制;
3.怀疑你的内存益处是数据过多;以及JDK的参数设置不当引起;

因为你这个类找不到合适的本地方法,就是你加载的那个数据库的驱动包没有被加载!

1,如果你是用eclipse的话,把驱动包加入到你的程序的LIB中去再启动程序!

2,如果你是打包后的jar的话,
那么就把其中的Manifest加入Class-Path: lib/sqlitejdbc-v053.jar
lib目录是就在jar所在的目录

3,为什么你的sqlite文件数据库没有后缀啊???难道不是*.s3db(我是三版本的,之前也应该是db后缀的)

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问