使用CN1数据访问初始化SQL Lite时出错

时间:2018-10-24 12:56:59

标签: codenameone

我习惯于使用Codename One,但不习惯使用数据库名称,这是我第一次使用它,并且CN1数据访问库遇到了一些问题。

我正在使用它的版本控制功能,但遇到了麻烦。我试图创建一个非常简单的表来实现某些图像缓存,但我总是遇到此异常:

java.io.IOException: [SQLITE_ERROR] SQL error or missing database (near ")": syntax error)
    at com.codename1.impl.javase.SEDatabase.execute(SEDatabase.java:107)
    at ca.weblite.codename1.db.DAOProvider.getDatabaseSchema(DAOProvider.java:192)
    at ca.weblite.codename1.db.DAOProvider.loadSchema(DAOProvider.java:248)
    at ca.weblite.codename1.db.DAO.<init>(DAO.java:109)
    at our.app.managers.dao.TarotImgDAO.<init>(TarotImgDAO.java:14)
    at our.app.managers.DatabaseHelper.initialize(DatabaseHelper.java:78)
    at our.app.managers.DatabaseHelper.getInstance(DatabaseHelper.java:43)
    at our.app.App.init(App.java:95)

这是sql文件:

--Version:1
CREATE TABLE tarot_img (
  id        INTEGER PRIMARY KEY AUTOINCREMENT,
  img_path  VARCHAR NOT NULL,
  img       BLOB
);
--

我已经使用DB Browser for SQL lite在SQL lite db上尝试了它,并且可以正常工作。 这是调用代码:

Database db = Display.getInstance().openOrCreate(DB_FILE);
DBinstance = db;
DAOProvider provider = new DAOProvider(db, "/liquibase.sql", DB_VERSION);
provider.set("tarot_img", new TarotImgDAO(provider)); <--- IOExc here

TarotImgDAO构造函数是:

public TarotImgDAO(DAOProvider provider) throws IOException {
    super("tarot_img", provider);
}

我真的不明白为什么这个超级基本的SQL会失败,也许是解析的原因?

我还不得不用github上的kaya18重建的原始库替换原始库,以克服由于库中的错误修剪而导致的NumberFormatException。

欢迎任何帮助:)

0 个答案:

没有答案