在Codename One应用程序中使用SQLite

时间:2016-12-20 14:21:15

标签: java sqlite codenameone

我有一个工作的sqlite数据库,我已放在我的/ src文件夹中。 然后我去了Codename One网站并按照他们的文档示例

java.sql.SQLException: [SQLITE_ERROR] SQL error or missing database (no such table: MyTable)

但是,当我运行该示例并尝试执行简单的选择查询时,我收到此错误...

ImportError: No module named 'sklearn'
  • 所以我添加了数据库
  • 我使用了' openOrCreate'声明

我错过了一步吗?

由于

6 个答案:

答案 0 :(得分:0)

您是否确实在执行时当前的工作目录是./src

尝试

db = Display.getInstance().openOrCreate("./src/MyDb.db");

或以绝对文件名打开:

db = Display.getInstance().openOrCreate("/path/to/src/MyDb.db");

答案 1 :(得分:0)

你可以尝试这个cn1lib https://github.com/shannah/cn1-data-access-lib

我已经使用过它并且它具有魅力,除了在同一个查询中不能用于2个表并且无法执行删除操作。

干杯

答案 2 :(得分:0)

感谢所有输入人员。

不幸的是,这些建议对我没有用。 但是我最终解决了它。

事实证明,我的主目录中有一个名为' .cn1 / database'的文件夹。一旦我将数据库放入这个文件夹就可以了。

两件事: 1]如果db不存在,那么它将创建它并将其放入此目录中 2]数据库不会出现在Netbeans的任何地方(不是我能看到的)

再次感谢

答案 3 :(得分:0)

来自developer guide

  

一些SQLite应用程序附带一个"现成的"数据库。我们允许你   使用代码替换DB文件:

     

String path = Display.getInstance().getDatabasePath(“databaseName”);

     

然后,您可以使用FileSystemStorage类来编写内容   你的DB文件进入路径。请注意,它必须是有效的SQLite   文件!

     

重要提示: Javascript端口不支持getDatabasePath()。它   将始终返回null。

     

这对于需要与a同步的应用程序非常有用   中央服务器或作为一部分附带大型数据库的应用程序   他们的核心产品。

您依赖于在模拟器中有意义的路径,在您需要将资源复制到位置的设备中。查看实现它的SQL演示:https://www.codenameone.com/blog/sql-demo-revisited.html

答案 4 :(得分:0)

将数据库文件放入src文件夹后,使用以下代码将数据库复制到Codenameone存储,运行后数据库将复制到目录“.cn1 / database”

String DB_NAME = "DBNAME.db";
Database temp_db = Database.openOrCreate(DB_NAME); //To create an empty file before copy, otherwise Android will throw file not found exception
temp_db.close();
String p = Database.getDatabasePath(DB_NAME);
OutputStream o = FileSystemStorage.getInstance().openOutputStream(p);
InputStream i = Display.getInstance().getResourceAsStream(getClass(), "/" + DB_NAME);
Util.copy(i, o);

答案 5 :(得分:0)

这似乎不是一个完整的答案。

我正在通过演示,似乎缺少一些东西:
不应该构建任务将此db资源复制到正确的目标文件夹吗?否则部署如何工作? (如果数据库没有打包,那么它将如何部署?)没有应用程序无法运行