我的代码如下:[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下为啥不用
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后缀的)