2017-04-06 3 views
1

Ich entwickle eine Anwendung, die Benutzerereignisse in der Datenbank speichert, und zu diesem Zweck verwende ich SQLite für Speicherzwecke, aber wenn ich Abfrage ausführe, wird es einen Fehler werfen. Unten ist mein Code, die Aktion ausgelöst, wenn Add-Schaltfläche geklickt wird: -Codename ein SQLite-Fehler beim Erstellen der Tabelle

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(); 
     } 
     } 
     }); 

Und die durch Anwendung geworfen Fehler unten gegeben: -

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) 
+0

sieht aus wie 'db.executeQuery' ist nicht für Abfragen konzipiert, die Ergebnis nicht zurückgeben. Deshalb gibt es Ausnahme –

Antwort

5

Anstatt db.executeQuery() für Ihre CREATE TABLE Anweisung aufzurufen, müssen Sie db.execute() anrufen.

+0

Dank Eric wird es funktionieren ... @ Eric O'Connell –

2

CREATE TABLE nicht eine Abfrage ; Es gibt keine Daten zurück.

Um eine Abfrage auszuführen, verwenden Sie executeQuery(), die einen Cursor zurückgibt, um auf die zurückgegebenen Daten zuzugreifen.
Um andere SQL-Anweisungen auszuführen, verwenden Sie stattdessen .

Verwandte Themen