java - 在 Codename One 应用程序中使用 SQLite

标签 java sqlite codenameone

我有一个可用的 sqlite 数据库,它位于我的/src 文件夹中。 然后我进入 Codename One 网站并按照他们的文档示例进行操作

    Database db = null;
    Cursor cur = null;
    try {
        db = Display.getInstance().openOrCreate("MyDb.db");
        if(query.getText().startsWith("select")) {
            cur = db.executeQuery(query.getText());
            int columns = cur.getColumnCount();
            frmMain.removeAll();
            if(columns > 0) {
                boolean next = cur.next();
                if(next) {
                    ArrayList<String[]> data = new ArrayList<>();
                    String[] columnNames = new String[columns];
                    for(int iter = 0 ; iter < columns ; iter++) {
                        columnNames[iter] = cur.getColumnName(iter);
                    }
                    while(next) {
                        Row currentRow = cur.getRow();
                        String[] currentRowArray = new String[columns];
                        for(int iter = 0 ; iter < columns ; iter++) {
                            currentRowArray[iter] = currentRow.getString(iter);
                        }
                        data.add(currentRowArray);
                        next = cur.next();
                    }
                    Object[][] arr = new Object[data.size()][];
                    data.toArray(arr);
                    frmMain.add(BorderLayout.CENTER, new Table(new DefaultTableModel(columnNames, arr)));
                } else {
                    frmMain.add(BorderLayout.CENTER, "Query returned no results");
                }
            } else {
                frmMain.add(BorderLayout.CENTER, "Query returned no results");
            }
        } else {
            db.execute(query.getText());
            frmMain.add(BorderLayout.CENTER, "Query completed successfully");
        }
        frmMain.revalidate();
    } catch(IOException err) {

        frmMain.removeAll();
        frmMain.add(BorderLayout.CENTER, "Error: " + err);
        frmMain.revalidate();
    } finally {
        Util.cleanup(db);
        Util.cleanup(cur);
    }

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

java.sql.SQLException: [SQLITE_ERROR] SQL error or missing database (no such table: MyTable)
  • 所以我添加了数据库
  • 我使用了“openOrCreate”语句

我是否错过了一个步骤?

谢谢

最佳答案

您确定当前执行时的工作目录是 ./src 吗?

尝试

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

或使用绝对文件名打开:

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

关于java - 在 Codename One 应用程序中使用 SQLite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41244478/

相关文章:

codenameone - 代号 一封电子邮件验证

java - 代号一 - 条码扫描仪

java - PI不能以xml开头

android - 如何从房间数据库中获取日期

python - 操作错误 : database is locked

MySQL - SQLite 如何改进这个非常简单的查询?

java - 在 Java 中使用 substring()

java - ExecutorService,避免任务队列太满的标准方法

java - 如何修复 :-org:jooq. 异常.DataAccessException 和 com.microsoft.sqlserver.jdbc.SQLServerException?

css - Codename One Components 在 Eclipse 上失去风格