SQL Problem

  • 2 Antworten
  • Letztes Antwortdatum
P

Panguan

Neues Mitglied
1
Hi,

Ich bin derzeit dabei eine Klasse zu schreiben, die bestimmte Datenbankfunktionen/Methoden zur Verfügung stellt. Diese will ich später in ein Spiel importieren. Es soll also möglich sein etwas in eine Datenbank zu schreiben(mittels einer einfachen Methode) und etwas aus dieser Datenbank zu lesen(auch mit einer einfachen Methode).
Ich will z.B. in die Datenbank schreiben, dass Spieler x, y Punkte erreicht hat und genau diese Informationen bei bedarf wieder auslesen. Ich weiß aber leider nicht, obwohl ich mir schon viele Tutorials angeguckt habe, wie genau ich das machen soll.
Bei SQL blicke ich absolut nicht durch. Ich hoffe ihr könnt mir helfen.
smile.png


Meine Klasse sieht derzeit so aus:

Code:
package de.Panguan.game1;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;


public class Database extends SQLiteOpenHelper {
private static final String Database_Name = "Datenbank.db"; //Datenbanknamen
private static final int Database_Version = 1;
private final static String Database_Table = "Daten";  //Tabellennamen
private final static String Database_Id = "_id";
private final static String Database_Titel = "Titel";
private final static String Database_Content = "Content";
private static final String MODE_PRIVATE = null;



    public Database(Context context, String name, CursorFactory factory,
            int version) {
        super(context, Database_Name, null, Database_Version); //null für die default factory
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String createDB = "CREATE TABlE IF NOT EXISTS" + Database_Table + "(" + Database_Id + " INTEGER PRIMARY KEY, " + Database_Titel + " TEXT, " + Database_Content + " TEXT)";
        db.execSQL(createDB);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int OldVersion, int NewVersion) {
        db.execSQL("DROP TABLE IF EXISTS" + Database_Table);  //alte löschen
        onCreate(db);                                         // neue erstellen
    }

    public void insertData(SQLiteDatabase db, String name, int score){
        db.execSQL("INSERT INTO "+Database_Table+" (name, score) "
                                    +"VALUES ('"+name+"',"+
                                    "'"+score+";");
    
        
    }

    public void readData(SQLiteDatabase db){
          try{
                db = this.openOrCreateDatabase(Database_Name, MODE_PRIVATE, null);
                Cursor c = db.rawQuery("SELECT _id, name || "+"FROM" + Database_Table, null);

          }
          finally{
              db.close();
          }
}

    private SQLiteDatabase openOrCreateDatabase(String databaseName,
            String modePrivate, Object object) {
        return null;
    }
}
 
Zum Hinzufügen am besten folgendes benutzen, dann brauchst du keinen ewig langen SQL Code der deutlich fehleranfälliger ist als mit ContentValues zu arbeiten :)

Code:
SQLiteDatabase db = this.getWritableDatabase():
 ContentValues values = new ContentValues(); values.put(KEY_NAME, contact.getName()); // Contact Name 
values.put(KEY_PH_NO, contact.getPhoneNumber()); // Contact Phone Number

 // Inserting Row
 db.insert(TABLE_CONTACTS, null, values); db.close();

Hoffe das System wir klar...

Lesen musst die Daten mithilfe eines Cursors, Beispiel:

Code:
 SQLiteDatabase db = this.getReadableDatabase(); 
Cursor cursor = db.query(TABLE_CONTACTS, new String[] { KEY_ID, KEY_NAME, KEY_PH_NO }, KEY_ID + "=?", new String[] { String.valueOf(id) }, null, null, null, null); 
if (cursor != null)
 cursor.moveToFirst();
 Contact contact = new Contact(Integer.parseInt(cursor.getString(0)), cursor.getString(1), cursor.getString(2));
 // return contact
 return contact;

Das Tutorial hier ist eigentlich ziemlich verständlich:
http://www.androidhive.info/2011/11/android-sqlite-database-tutorial/

(davon ist auch obiger Code)
 
Zurück
Oben Unten