Where is the code for the select statement? Is it the fetchAll() method? ---------------------------------------------------------------------- There are only 10 types of people in the world... Those who know binary and those who don't. ----------------------------------------------------------------------
On Mon, Jul 19, 2010 at 1:37 PM, Rodney Lendore <[email protected]>wrote: > Hi, > > 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("local_network", 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 > [email protected]<android-beginners%[email protected]> > For more options, visit this group at > http://groups.google.com/group/android-beginners?hl=en > -- 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 [email protected] For more options, visit this group at http://groups.google.com/group/android-beginners?hl=en

