将 sqlite-jdbc-3.7.2.jar 放在 libs 文件夹中会导致 eclipse 运行到堆错误。将其放在单独的文件夹中并将其添加到构建路径会导致类未找到错误。将其添加到导出的 jars 列表也会导致堆错误。
有任何想法吗?
快速回答,不管你把它放在哪里都会失败。问题是 Android 不支持某些原生 jar 库。我们可能不得不依赖一些开发人员来移植一些更好的分辨率。
在这种情况下(虽然我确定还有其他人),您可以使用SQLDroid.jar代替。我已经对其进行了测试,到目前为止,它的性能与本地 java 程序中的普通 sqlite-jdbc-3.7.2.jar 一样。
我敢肯定(正如我在对 cYrixmorten 的评论中提到的那样,选择使用原生 sqlite 支持的目的是为了让您的其他 sqlite 数据库具有可移植性,以及拥有原生 CRUD 支持。
使用 SQLDroid.jar 的经过测试的工作示例:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
代码段:
public void checksqlite()
{
try {
String db = "jdbc:sqlite:" + getFilesDir() + "/test.db";
Class.forName("org.sqldroid.SQLDroidDriver");
Connection conn = DriverManager.getConnection(db);
Statement stat = conn.createStatement();
stat.executeUpdate("create table primes (number int);");
stat.executeUpdate("insert into primes values (2);");
stat.executeUpdate("insert into primes values (3);");
stat.executeUpdate("insert into primes values (5);");
stat.executeUpdate("insert into primes values (7);");
ResultSet rs = stat.executeQuery("select * from primes");
boolean b = rs.first();
while (b) {
Log.d("JDBC", "Prime=" + rs.getInt(1));
b = rs.next();
}
conn.close();
} catch (Exception e) {
Log.e("JDBC", "Error", e);
}
}
cYrixmorten 提供的链接和评论对于帮助我找到这个解决方案非常宝贵。我希望其他人可以从中受益。