Fehler bei Erstellen einer DB

  • Antworten:9
  • Bentwortet
Syntac Moore
  • Forum-Beiträge: 44

27.04.2014, 23:40:59 via Website

04-27 20:15:50.869: I/Database(429): sqlite returned: error code = 1, msg = near ";)": syntax error 04-27 20:15:50.869: E/Database(429): Failure 1 (near ";)": syntax error) on 0x266708 when preparing 'CREATE TABLE IF NOT EXISTS charm (nr INTEGER PRIMARY KEY, spruch VARCHAR (100), bewertung VARCHAR (20)'.

charmDB.execSQL("CREATE TABLE IF NOT EXISTS charm (nr INTEGER PRIMARY KEY, spruch VARCHAR (100), bewertung VARCHAR (20)");

Ich versteh den Fehler hier nicht ganz, weil wenn ich den SQL Befehl in MySQL eingebe erstellt er ohne Probleme eine DB.

Antworten
SvenDD
  • Forum-Beiträge: 272

28.04.2014, 10:31:49 via Website

Da fehlt am Ende eine abschließende Klammer.

Antworten
Syntac Moore
  • Forum-Beiträge: 44

28.04.2014, 12:15:54 via Website

Also ich habs jetzt nochmal etwas geändert

Das ist meine Methode, die eine DB erstellt, falls noch nicht vorhanden.

// Methode, die die Datenbank erstellt
// (wenn sie noch nicht vorhanden ist, ansonsten
// wird die DB geöffnet)
public void dbErstellen(Context meinContext) {
    try {
        String pfad = "/sdcard/pizza.db";
        pizzaDB = SQLiteDatabase.openOrCreateDatabase(pfad, null);

        // In der leeren Datenbank die Tabellen erstellen

        pizzaDB.execSQL("CREATE TABLE IF NOT EXISTS pizzen(nr INTEGER PRIMARY KEY, pizza VARCHAR(50));");
        pizzaDB.close();

        meinContext.getApplicationContext();
        Toast meinToast = Toast.makeText(meinContext, "DB erstellt", 20);
        meinToast.show();
    } catch (Exception e) {
        meinContext.getApplicationContext();
        Toast meinToast = Toast.makeText(meinContext,
                "DB-Erstellung fehlgeschlagen", 20);
        meinToast.show();
    }
}

04-28 10:08:34.023: E/Database(392): sqlite3_open_v2("/sdcard/pizza.db", &handle, 6, NULL) failed

Die Klammern müssten jetzt soweit auch stimmen.

— geändert am 28.04.2014, 12:17:54

Antworten
Ludy
  • Admin
  • Forum-Beiträge: 7.959

28.04.2014, 13:37:07 via Website

Permission -> android.permission.WRITE_EXTERNAL_STORAGE

Probier mal das:

public void dbErstellen(Context meinContext) {
    SQLiteDatabase pizzaDB;
    try {
        String pfad = Environment.getExternalStorageDirectory().getPath() + "/pizza.db";
        pizzaDB = meinContext.openOrCreateDatabase(pfad, Context.MODE_PRIVATE, null);

        // In der leeren Datenbank die Tabellen erstellen

        pizzaDB.execSQL("CREATE TABLE IF NOT EXISTS pizzen(nr INTEGER PRIMARY KEY, pizza VARCHAR(50));");
        pizzaDB.close();

        meinContext.getApplicationContext();
        Toast meinToast = Toast.makeText(meinContext, "DB erstellt", 20);
        meinToast.show();
    } catch (Exception e) {
        meinContext.getApplicationContext();
        Toast meinToast = Toast.makeText(meinContext,
                "DB-Erstellung fehlgeschlagen", 20);
        meinToast.show();
    }
}

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

☕ Buy Me A Coffee ☕

Lebensmittelwarnung-App

✨Meine Wunschliste✨

📲Telegram NextPit News📲

Syntac Moore

Antworten
Syntac Moore
  • Forum-Beiträge: 44

28.04.2014, 15:54:40 via Website

Ja das war das was noch gefehlt hat, ist mir dann erst wieder eingefallen.

Aber danke noch für deine Antwort :)

Antworten
Ludy
  • Admin
  • Forum-Beiträge: 7.959

28.04.2014, 16:49:53 via App

Pascal P.

Wenn es keine externe also eine physisch entfernbare Sd karte gibt verweist die Funktion doch standartmäßig auf den internen speicher, so hatte ich es diesem Thread entnommen: https://www.nextpit.de/forum/455252/environment-getexternalstoragedirectory-bei-telefonen-ohne-sd-karte

Richtig aber nur unter Verwendung von Environment.getExternalStorageDirectory().getPath()

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

☕ Buy Me A Coffee ☕

Lebensmittelwarnung-App

✨Meine Wunschliste✨

📲Telegram NextPit News📲

Antworten