2016-03-29 20 views
0

SQLite Asset Helper'ı kullanarak önceden doldurulmuş bir veritabanını başarıyla uyguladı ve bu tutorial kullanarak tablodaki nesnelerimin adlarını listelemek için bir sorgulama gerçekleştirdim. Ancak, yeni nesneler eklemek, silmek ve eklemek için android uygulamasına CRUD fonksiyonları eklemek istiyorum. Bunu nasıl yapabilirim?CRUD işlemleri önceden doldurulmuş bir SQLite veritabanı üzerinde

DatabaseOpenHelper.java

import android.content.Context; 

import com.readystatesoftware.sqliteasset.SQLiteAssetHelper; 

public class DatabaseOpenHelper extends SQLiteAssetHelper { 
private static final String DATABASE_NAME = "camera1.db"; 
private static final int DATABASE_VERSION = 1; 

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


} 

DatabaseAccess.java

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

import java.util.ArrayList; 
import java.util.List; 

public class DatabaseAccess { 
private SQLiteOpenHelper openHelper; 
private SQLiteDatabase database; 
private static DatabaseAccess instance; 

/** 
* Private constructor to aboid object creation from outside classes. 
* 
* @param context 
*/ 
private DatabaseAccess(Context context) { 
    this.openHelper = new DatabaseOpenHelper(context); 
} 

/** 
* Return a singleton instance of DatabaseAccess. 
* 
* @param context the Context 
* @return the instance of DabaseAccess 
*/ 
public static DatabaseAccess getInstance(Context context) { 
    if (instance == null) { 
     instance = new DatabaseAccess(context); 
    } 
    return instance; 
} 

/** 
* Open the database connection. 
*/ 
public void open() { 
    this.database = openHelper.getWritableDatabase(); 
} 

/** 
* Close the database connection. 
*/ 
public void close() { 
    if (database != null) { 
     this.database.close(); 
    } 
} 

/** 
* Read all quotes from the database. 
* 
* @return a List of quotes 
*/ 
public List<String> getQuotes() { 
    List<String> list = new ArrayList<>(); 
    Cursor cursor = database.rawQuery("SELECT cameraname FROM camera", null); 
    cursor.moveToFirst(); 
    while (!cursor.isAfterLast()) { 
     list.add(cursor.getString(0)); 
     cursor.moveToNext(); 
    } 
    cursor.close(); 
    return list; 
} 
} 

cevap

0

bir cihazın içine veritabanını kopyalamak için gereken Bunun için:

private static void copyDatabase(Context context) throws IOException { 
    InputStream myInput = context.getResources().openRawResource(
      R.raw.database); 
    String outFileName = getFullDbName(context); 
    OutputStream myOutput = new FileOutputStream(outFileName); 

    byte[] buffer = new byte[1024]; 
    int length; 
    while ((length = myInput.read(buffer)) > 0) { 
     myOutput.write(buffer, 0, length); 
    } 
    myOutput.flush(); 
    myOutput.close(); 
    myInput.close(); 
} 

Sonra sadece veritabanını olarak açılacak olağan:

mSqlite = new SqliteHelper(context, getFullDbName(context), null, 
      DATABASE_VERSION); 

Bundan sonra, istediğiniz herhangi bir ham sorguyu yazabilirsiniz.

İlgili konular