2016-04-27 3 views
-3

Ich habe drei Klassen viz. saveinSQL (meine Datenbankklasse), Home (die Klasse, in der ich auf die Datenbank zugreifen möchte), Create (die Klasse, in der ich die Datenbank erstellt habe). Ich habe ein Problem. Ich möchte auf die Datenbank zugreifen, die von der Create-Klasse in der Home-Klasse erstellt wurde. Kann mir jemand dabei helfen?Zugriff auf SQLite-Datenbank von zwei verschiedenen Aktivitäten in Android Studio

public class saveinSQL extends SQLiteOpenHelper { 
    private static final int DATABASE_VERSION = 2; 
    private static final String PETITIONS_TABLE_NAME = "Petitions"; 
    private static final String DATABASE_NAME = "myDB.db"; 
    public static final String PETITIONS_COLUMN_ID = "id"; 
    public static final String PETITIONS_COLUMN_HEADING = "heading"; 
    public static final String PETITIONS_COLUMN_DESCRIPTION = "description"; 
    public static final String PETITIONS_COLUMN_PEOPLE = "people"; 

public saveinSQL(Context context) { 
    super(context, DATABASE_NAME, null, DATABASE_VERSION); 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    db.execSQL(
      "create table Petitions" + 
        "(id integer primary key, heading text, description text, people text)" 
    ); 
} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    db.execSQL("DROP TABLE IF EXISTS Petitions"); 
    onCreate(db); 
} 

public boolean insertPetition (String heading, String description,String people) 
{ 
    SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues contentValues = new ContentValues(); 
    contentValues.put("heading", heading); 
    contentValues.put("description", description); 
    contentValues.put("people", people); 
    db.insert("Petitions", null, contentValues); 
    return true; 
} 

public Cursor getData(int id){ 
    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor res = db.rawQuery("select * from Petitions where id="+id+"", null); 
    return res; 
} 




public String getHeader(int id){ 
    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor res = db.rawQuery("select * from Petitions where id=" + id + "", null); 
    res.moveToFirst(); 
    for(int i = 1; i < id; i++){ 
     res.moveToNext(); 
    } 
    String header = res.getString(res.getColumnIndex(saveinSQL.PETITIONS_COLUMN_HEADING)); 
    return header; 
} 

public String getDescription(int id){ 
    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor res = db.rawQuery("select * from Petitions where id=" + id + "", null); 
    res.moveToFirst(); 
    for(int i = 1; i < id; i++){ 
     res.moveToNext(); 
    } 
    String descrip = res.getString(res.getColumnIndex(saveinSQL.PETITIONS_COLUMN_DESCRIPTION)); 
    return descrip; 
} 

public String getPeople(int id){ 
    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor res = db.rawQuery("select * from Petitions where id=" + id + "", null); 
    res.moveToFirst(); 
    for(int i = 1; i < id; i++){ 
     res.moveToNext(); 
    } 
    String people = res.getString(res.getColumnIndex(saveinSQL.PETITIONS_COLUMN_PEOPLE)); 
    return people; 
} 




public int numberOfRows(){ 
    SQLiteDatabase db = this.getReadableDatabase(); 
    int numRows = (int) DatabaseUtils.queryNumEntries(db, PETITIONS_TABLE_NAME); 
    return numRows; 
} 

public boolean updatePetitiont (Integer id, String heading, String description, String people) 
{ 
    SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues contentValues = new ContentValues(); 
    contentValues.put("heading", heading); 
    contentValues.put("description", description); 
    contentValues.put("people", people); 
    db.update("Petitions", contentValues, "id = ? ", new String[] { Integer.toString(id) }); 
    return true; 
} 

public Integer deletePetition (Integer id) 
{ 
    SQLiteDatabase db = this.getWritableDatabase(); 
    return db.delete("Petitions", 
      "id = ? ", 
      new String[] { Integer.toString(id) }); 
} 

public ArrayList<String> getAllPetitions() 
{ 
    ArrayList<String> array_list = new ArrayList<String>(); 

    //hp = new HashMap(); 
    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor res = db.rawQuery("select * from Petitions", null); 
    res.moveToFirst(); 

    while(res.isAfterLast() == false){ 
     array_list.add(res.getString(res.getColumnIndex(PETITIONS_COLUMN_HEADING))); 
     res.moveToNext(); 
    } 
    return array_list; 
    } 
} 
+0

Lesen Sie über Singleton-Muster. – sonngaytho

Antwort

0

In der Hauptklasse, werden Sie ein Objekt von saveinSQL und rufen Sie die Methode entsprechend der Aktivität, die Sie durchführen wollen, müssen instanziiert. Zum Beispiel:

saveinSQL mySaveinSQL = new saveinSQL(<context>); 
mySaveinSQL.getHeader(id); 
+0

Das hilft, danke. :) @Jumboban –

Verwandte Themen