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)
sieht aus wie 'db.executeQuery' ist nicht für Abfragen konzipiert, die Ergebnis nicht zurückgeben. Deshalb gibt es Ausnahme –