SQLight insert dann absturz,

  • Antworten:3
Volkan Aydin
  • Forum-Beiträge: 187

27.04.2014, 20:02:58 via Website

Ich finde einfach den fehler nicht, eclipse zeigt mir nichts an.

wenn ich dann die app starte ist alles gut, danach gebe ich bn und pw ein und will wenn das Checkfeld aktiviert ist, den benutzernamen abspeichern.

Ich dachte mir, das macht man doch mit SQLight. dazu lasse ich natürlich zu beginn überprüfen ob die db vorhanden ist, und wenn nicht soll sie erstellt werden.....

final static String MY_DB_NAME = "awad"; 
final static String MY_DB_TABLE = "login"; 
final static String tag="volkan";
SQLiteDatabase myDB = null;
private void onCreateDBAndDBTabled()
{

    try {
        myDB = this.openOrCreateDatabase(MY_DB_NAME, MODE_PRIVATE, null);
        myDB.execSQL("CREATE TABLE IF NOT EXISTS " + MY_DB_TABLE
                + " (_id integer primary key autoincrement, "
                + "bn varchar(100) "
                + ");");


    } finally {
         if (myDB != null)
              myDB.close();
    }
}

Das ganze Funktioniert (so hoff ich doch), jedenfalls kein absturz :)

dann aber wenn ich einloggen will und den benutzernamen speichern will in der DB, stürtzt das App im emulator ab:

private void saveBnInDb() {
EditText savebn = (EditText)findViewById(R.id.ETbn);
myDB.execSQL("INSERT INTO "+MY_DB_TABLE+" (bn) VALUES (' "+ savebn.getText().toString() + "');" );}

Ich bin mir noch nicht sicher wie Android arbeiet.... muss ich die DB öffnen? wenn ja wie?

Falls ihr nun lustlos den Kopf schüttelt weil es eine 100x einfachere lösung gibt.. ich bin für alles offen ;)

Vielen dank!

Antworten
Volkan Aydin
  • Forum-Beiträge: 187

27.04.2014, 22:10:56 via Website

also ich denke myDb könnte eben geschlossen sein, wenn du den oberen Code anssiehts wird dieser geschlossen im finally { }.

Ich habe nun ein anderen Code zusammengeschnipselt, sieht völlig anders aus, aber hat vieleicht funktioniert... bin noch nicht soweit die db auszulesen... ich taste mich da einfach mal ran... :) ich noch völliges neuland für mich, komme vom php/javascript......

so sieht dieser jedenfalls mal aus :

myDB = this.openOrCreateDatabase(MY_DB_NAME, MODE_PRIVATE, null);
ContentValues values = new ContentValues(); 
values.put("bn", savebn.getText().toString()); 
myDB.insert(MY_DB_TABLE, null, values); 
myDB.close();

Die App ist jedenfalls nicht abgestürzt... ;)

Ich werde mir morgen das LocCat mal genau ansehen, mittlerweile habe ich so im allgemeinem verstanden was das ist, habe es bereits auch versucht einzusetzten aber k.a. . Irgendwas verstehe ich da wohl noch nicht ganz so....

Sollte es beim Eclipse ->LocCat anzeigen oder????, aber wie gesagt, das finde ich alleine raus ;)

Antworten
SvenDD
  • Forum-Beiträge: 272

27.04.2014, 22:35:01 via Website

Du musst die Verbindung zur Datenbank immer offenen bevor du eine Operation ausführst. Da du die Verbindung geschlossen hast.

Antworten