Hi, Sorry for reposting this, but some of the initial details were incorrect. I have followed the instructions from this site to the letter http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/comment-page-2/ but to no avail. Each time I run the code suggested, the Eclipse debugger keep throwing the following error no such table: TABLE: , while compiling: SELECT _id, network, url FROM TABLE.
I created the database using SQLite Browser and ran the emulator's shell and can see that the database was there. Here is the code that I am implementing to manage the database: package com.rodney.IET_Events_Widget; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite. SQLiteDatabase; import android.database.sqlite.SQLiteException; import android.database.sqlite.SQLiteOpenHelper; public class DataBaseHelper extends SQLiteOpenHelper { //The Android's default system path of your application database. private static String DB_PATH = "/data/data/com.rodney.IET_Events_Widget/databases/"; private static final String DB_NAME = "local_network_db"; private static final String DB_TABLE = "local_network"; public static final String KEY_NETWORK = "network"; public static final String KEY_URL = "url"; public static final String KEY_ROWID = "_id"; private SQLiteDatabase myDataBase; private final Context myContext; /** * Constructor * Takes and keeps a reference of the passed context in order to access to the application assets and resources. * @param context */ public DataBaseHelper(Context context) { super(context, DB_NAME, null, 1); this.myContext = context; } /** * Creates a empty database on the system and rewrites it with your own database. * */ public void createDataBase() throws SQLException{ boolean dbExist = checkDataBase(); if(dbExist){ //do nothing - database already exist }else{ //By calling this method and empty database will be created into the default system path //of your application so we are gonna be able to overwrite that database with our database. this.getReadableDatabase(); try { copyDataBase(); } catch (IOException e) { throw new Error("Error copying database"); } } } /** * Check if the database already exist to avoid re-copying the file each time you open the application. * @return true if it exists, false if it doesn't */ private boolean checkDataBase(){ SQLiteDatabase checkDB = null; try{ String myPath = DB_PATH + DB_NAME; checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY); }catch(SQLiteException e){ //database does't exist yet. } if(checkDB != null){ checkDB.close(); } return checkDB != null ? true : false; } /** * Copies your database from your local assets-folder to the just created empty database in the * system folder, from where it can be accessed and handled. * This is done by transferring bytestream. * */ private void copyDataBase() throws IOException{ //Open your local db as the input stream InputStream myInput = myContext.getAssets().open(DB_NAME); // Path to the just created empty db String outFileName = DB_PATH + DB_NAME; //Open the empty db as the output stream OutputStream myOutput = new FileOutputStream(outFileName); //transfer bytes from the inputfile to the outputfile byte[] buffer = new byte[1024]; int length; while ((length = myInput.read(buffer))>0){ myOutput.write(buffer, 0, length); } //Close the streams myOutput.flush(); myOutput.close(); myInput.close(); } public void openDataBase() throws SQLException{ //Open the database String myPath = DB_PATH + DB_NAME; myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY); } @Override public synchronized void close() { if(myDataBase != null) myDataBase.close(); super.close(); } @Override public void onCreate(SQLiteDatabase db) { } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } /** * Return a Cursor over the list of all notes in the database * * @return Cursor over all notes */ public Cursor fetchAll() { return myDataBase.query(DB_TABLE, new String[] {KEY_ROWID, KEY_NETWORK,KEY_URL}, null, null, null, null, null); } } And here is the code for the implementation in my ListView Activity: public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.cfg_activity); mDbHelper = new DataBaseHelper(this); mDbHelper.openDataBase(); fillData(); saveButton(); cancelButton(); Intent intent = getIntent(); Bundle extras = intent.getExtras(); if (extras != null) { mAppWidgetId = extras.getInt( AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); } } ......... ........... ................. private void fillData() { // Get all of the rows from the database and create the item list mNetworkCursor = mDbHelper.fetchAll(); startManagingCursor(mNetworkCursor); // Create an array to specify the fields we want to display in the list (only TITLE) String[] from = new String[]{DataBaseHelper.KEY_NETWORK}; // and an array of the fields we want to bind those fields to (in this case just text1) int[] to = new int[]{R.id.text1}; // Now create a simple cursor adapter and set it to display SimpleCursorAdapter iet_networks = new SimpleCursorAdapter(this, R.layout.ln_rows, mNetworkCursor, from, to); setListAdapter(networks); } Any clues or help will be greatly appreciated, let me know if more detail is required. Many thanks in advance Rodney -- You received this message because you are subscribed to the Google Groups "Android Beginners" group. NEW! Try asking and tagging your question on Stack Overflow at http://stackoverflow.com/questions/tagged/android To unsubscribe from this group, send email to android-beginners+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-beginners?hl=en