java - 创建表时代号一个 SQLite 错误

标签 java android mysql sqlite codenameone

我正在开发一个将用户事件存储在数据库中的应用程序,为此我使用 SQLite 进行存储,但是当我执行查询时它会抛出错误。 下面是我的代码,它在单击添加按钮时触发操作:-

add.addActionListener(new ActionListener() {
   @Override
   public void actionPerformed(ActionEvent evt) {
     Log.p(dateLabel.getText().toString());
     //if((dateLabel.getText() == null) && (eventArea.getText() == null) && (descriptionArea.getText() == null)){
     if ((dateLabel.getText() == "") || (eventArea.getText() == "") || (descriptionArea.getText() == "")) {
      Dialog.show("Required field", "Please fill all the fields", "OK", "");
     }
     //}
     else {

      Label date1 = new Label("Event Date:- ");
      Label dateLabel1 = new Label(dateLabel.getText());
      Label event1 = new Label("Event:- ");
      Label eventArea1 = new Label(eventArea.getText());
      Label description1 = new Label("Event Description:- ");
      Label descriptionArea1 = new Label(descriptionArea.getText());

      Container container1 = TableLayout.encloseIn(2, date1, dateLabel1, event1, eventArea1, description1, descriptionArea1);
      container1.setUIID("container");

      saveEvent.add(container1);

      ToastBar.showMessage("Event successfull saved", FontImage.MATERIAL_SAVE, 4000);

      //Databse Working


      try {
       db = Display.getInstance().openOrCreate("Events.db");
       cur = db.executeQuery("CREATE TABLE 'calendar' ('Date' DATE NOT NULL,'Event' VARCHAR(250) NOT NULL,'Description' VARCHAR(500) NOT NULL);");

       String[] values = new String[] {
        dateLabel.getText(), eventArea.getText(), descriptionArea.getText()
       };

       db.execute("INSERT INTO data('Date','Event','Description') VALUES(?,?,?)", values);

       Button database = new Button("Database");
       calendar.add(database);
       database.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent evt) {
         try {
          cur = db.executeQuery("SELECT * FROM data");
          int columns = cur.getColumnCount();
          DataEvent.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);
            DataEvent.add(BorderLayout.CENTER, new Table(new DefaultTableModel(columnNames, arr)));
           } else {
            DataEvent.add(BorderLayout.CENTER, "Query returned no results");
           }
          } else {
           DataEvent.add(BorderLayout.CENTER, "Query returned no results");
          }
          DataEvent.revalidate();
          Util.cleanup(db);
          Util.cleanup(cur);
         } catch (IOException e) {
          e.printStackTrace();
         }
        }
       });

应用程序抛出的错误如下:-

java.sql.SQLException: Query does not return results
    at org.sqlite.PrepStmt.executeQuery(PrepStmt.java:104)
    at com.codename1.impl.javase.SEDatabase.executeQuery(SEDatabase.java:172)
    at com.pivotal.calendar.Calender$4.actionPerformed(Calender.java:211)
    at com.codename1.ui.util.EventDispatcher.fireActionEvent(EventDispatcher.java:349)
    at com.codename1.ui.Button.fireActionEvent(Button.java:435)
    at com.codename1.ui.Button.released(Button.java:467)
    at com.codename1.ui.Button.pointerReleased(Button.java:566)
    at com.codename1.ui.Form.pointerReleased(Form.java:2642)
    at com.codename1.ui.Form.pointerReleased(Form.java:2578)
    at com.codename1.ui.Component.pointerReleased(Component.java:3266)
    at com.codename1.ui.Display.handleEvent(Display.java:2025)
    at com.codename1.ui.Display.edtLoopImpl(Display.java:1070)
    at com.codename1.ui.Display.mainEDTLoop(Display.java:999)
    at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120)
    at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
java.io.IOException: Query does not return results
    at com.codename1.impl.javase.SEDatabase.executeQuery(SEDatabase.java:176)
    at com.pivotal.calendar.Calender$4.actionPerformed(Calender.java:211)
    at com.codename1.ui.util.EventDispatcher.fireActionEvent(EventDispatcher.java:349)
    at com.codename1.ui.Button.fireActionEvent(Button.java:435)
    at com.codename1.ui.Button.released(Button.java:467)
    at com.codename1.ui.Button.pointerReleased(Button.java:566)
    at com.codename1.ui.Form.pointerReleased(Form.java:2642)
    at com.codename1.ui.Form.pointerReleased(Form.java:2578)
    at com.codename1.ui.Component.pointerReleased(Component.java:3266)
    at com.codename1.ui.Display.handleEvent(Display.java:2025)
    at com.codename1.ui.Display.edtLoopImpl(Display.java:1070)
    at com.codename1.ui.Display.mainEDTLoop(Display.java:999)
    at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120)
    at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)

最佳答案

您需要调用 db.execute(),而不是为您的 CREATE TABLE 语句调用 db.executeQuery()

关于java - 创建表时代号一个 SQLite 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43248629/

相关文章:

java - 消灭敌人的有效方法

java - MapReduce到Spark

页面对象模型中的 Javascript 执行器

java - 从通用类创建新的特定对象

mysql - 使用外部数据包装器在 PostgreSQL 中删除外部模式

java - 如何修复 "FAILURE: Build failed with an exception.- Could not determine java version from ' 11.0.1'

java - ADT - 如何以图形方式编辑大于屏幕尺寸的 ScrollView ?

android - OnGestureListener.onDown()返回false的含义

php - 当用户看到通知时更新阅读列

mysql - 获取数据库中查看次数最多的数据