我习惯于使用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。
欢迎任何帮助:)