Use a different database name and see if that helps (since it will run your onCreate() method). You can also try changing the name of the table to something else (like user_options) and see if that works. I wonder if options is an internal keyword used by SQLite.
- Moazzam http://moazzam-khan.com/ On May 7, 1:42 pm, Glen Humphrey <glendon.humphr...@gmail.com> wrote: > It looks to me like your program tries to fetch from the options table > before it has been created. > > On May 7, 2:28 am, "mic.ger...@gmail.com" <mic.ger...@gmail.com> > wrote: > > > Hi all, > > I am developing an application that need a database (store username > > and password) and when I try to access to it I obtain those errors in > > the logCat : > > > 05-07 09:02:17.194: ERROR/AndroidRuntime(520): Uncaught handler: > > thread main exiting due to uncaught exception > > 05-07 09:02:17.213: ERROR/AndroidRuntime(520): > > android.database.sqlite.SQLiteException: no such table: options: , > > while compiling: SELECT DISTINCT _id, title, body FROM options WHERE > > _id=0 > > 05-07 09:02:17.213: ERROR/AndroidRuntime(520): at > > android.database.sqlite.SQLiteProgram.native_compile(Native Method) > > 05-07 09:02:17.213: ERROR/AndroidRuntime(520): at > > android.database.sqlite.SQLiteProgram.compile(SQLiteProgram.java:110) > > 05-07 09:02:17.213: ERROR/AndroidRuntime(520): at > > android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:59) > > 05-07 09:02:17.213: ERROR/AndroidRuntime(520): at > > android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:48) > > 05-07 09:02:17.213: ERROR/AndroidRuntime(520): at > > android.database.sqlite.SQLiteDirectCursorDriver.query > > (SQLiteDirectCursorDriver.java:49) > > 05-07 09:02:17.213: ERROR/AndroidRuntime(520): at > > android.database.sqlite.SQLiteDatabase.rawQueryWithFactory > > (SQLiteDatabase.java:1017) > > 05-07 09:02:17.213: ERROR/AndroidRuntime(520): at > > android.database.sqlite.SQLiteDatabase.queryWithFactory > > (SQLiteDatabase.java:905) > > 05-07 09:02:17.213: ERROR/AndroidRuntime(520): at > > android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:863) > > 05-07 09:02:17.213: ERROR/AndroidRuntime(520): at > > com.android.application.MonkeySMS.OptionDb.fetchOption(OptionDb.java: > > 84) > > 05-07 09:02:17.213: ERROR/AndroidRuntime(520): at > > com.android.application.MonkeySMS.Option$1.onClick(Option.java:70) > > 05-07 09:02:17.213: ERROR/AndroidRuntime(520): at > > android.view.View.performClick(View.java:2129) > > 05-07 09:02:17.213: ERROR/AndroidRuntime(520): at > > android.view.View.onTouchEvent(View.java:3543) > > 05-07 09:02:17.213: ERROR/AndroidRuntime(520): at > > android.widget.TextView.onTouchEvent(TextView.java:4664) > > 05-07 09:02:17.213: ERROR/AndroidRuntime(520): at > > android.view.View.dispatchTouchEvent(View.java:3198) > > 05-07 09:02:17.213: ERROR/AndroidRuntime(520): at > > android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:857) > > 05-07 09:02:17.213: ERROR/AndroidRuntime(520): at > > android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:857) > > 05-07 09:02:17.213: ERROR/AndroidRuntime(520): at > > android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:857) > > 05-07 09:02:17.213: ERROR/AndroidRuntime(520): at > > android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:857) > > 05-07 09:02:17.213: ERROR/AndroidRuntime(520): at > > android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:857) > > 05-07 09:02:17.213: ERROR/AndroidRuntime(520): at > > com.android.internal.policy.impl.PhoneWindow > > $DecorView.superDispatchTouchEvent(PhoneWindow.java:1593) > > 05-07 09:02:17.213: ERROR/AndroidRuntime(520): at > > com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent > > (PhoneWindow.java:1089) > > 05-07 09:02:17.213: ERROR/AndroidRuntime(520): at > > android.app.Activity.dispatchTouchEvent(Activity.java:1871) > > 05-07 09:02:17.213: ERROR/AndroidRuntime(520): at > > com.android.internal.policy.impl.PhoneWindow > > $DecorView.dispatchTouchEvent(PhoneWindow.java:1577) > > 05-07 09:02:17.213: ERROR/AndroidRuntime(520): at > > android.view.ViewRoot.handleMessage(ViewRoot.java:1140) > > 05-07 09:02:17.213: ERROR/AndroidRuntime(520): at > > android.os.Handler.dispatchMessage(Handler.java:88) > > 05-07 09:02:17.213: ERROR/AndroidRuntime(520): at > > android.os.Looper.loop(Looper.java:123) > > 05-07 09:02:17.213: ERROR/AndroidRuntime(520): at > > android.app.ActivityThread.main(ActivityThread.java:3739) > > 05-07 09:02:17.213: ERROR/AndroidRuntime(520): at > > java.lang.reflect.Method.invokeNative(Native Method) > > 05-07 09:02:17.213: ERROR/AndroidRuntime(520): at > > java.lang.reflect.Method.invoke(Method.java:515) > > 05-07 09:02:17.213: ERROR/AndroidRuntime(520): at > > com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run > > (ZygoteInit.java:739) > > 05-07 09:02:17.213: ERROR/AndroidRuntime(520): at > > com.android.internal.os.ZygoteInit.main(ZygoteInit.java:497) > > 05-07 09:02:17.213: ERROR/AndroidRuntime(520): at > > dalvik.system.NativeStart.main(Native Method) > > > The problem appends when the program arrives at this line in my > > program : > > > if(mOptionDb.fetchOption(0)==null && mOptionDb.fetchOption(1)==null){ > > mOptionDb.createOption(titleDb0, > > txtUsername.toString > > ()); > > mOptionDb.createOption(titleDb1, > > txtPassword.toString > > ()); > > } > > > mOptionDb is an OptionDb. > > > The OptionDb file is the following : > > > public class OptionDb { > > > private Context mCtx; > > > public static final String KEY_TITLE = "title"; > > public static final String KEY_BODY = "body"; > > public static final String KEY_ROWID = "_id"; > > > private static final String TAG = "OptionDbAdapter"; > > private DatabaseHelper mDbHelper; > > private SQLiteDatabase mDb; > > > private static final String DATABASE_CREATE = > > "create table options (_id integer primary key autoincrement, > > " > > + "title text not null, body text not null);"; > > > private static final String DATABASE_NAME = "data"; > > private static final String DATABASE_TABLE = "options"; > > private static final int DATABASE_VERSION = 2; > > > private static class DatabaseHelper extends SQLiteOpenHelper { > > > DatabaseHelper(Context context) { > > super(context, DATABASE_NAME, null, DATABASE_VERSION); > > } > > > @Override > > public void onCreate(SQLiteDatabase db) { > > > db.execSQL(DATABASE_CREATE); > > } > > > @Override > > public void onUpgrade(SQLiteDatabase db, int oldVersion, int > > newVersion) { > > Log.w(TAG, "Upgrading database from version " + oldVersion > > + " to " > > + newVersion + ", which will destroy all old > > data"); > > db.execSQL("DROP TABLE IF EXISTS notes"); > > onCreate(db); > > } > > } > > > public OptionDb(Context ctx) { > > this.mCtx = ctx; > > } > > > public OptionDb open() throws SQLException { > > mDbHelper = new DatabaseHelper(mCtx); > > mDb = mDbHelper.getWritableDatabase(); > > return this; > > } > > > public void close(){ > > mDbHelper.close(); > > } > > > public void createOption(String title, String body) { > > ContentValues initialValues = new ContentValues(); > > initialValues.put(KEY_TITLE, title); > > initialValues.put(KEY_BODY, body); > > > mDb.insert(DATABASE_TABLE, null, initialValues); > > //return mDb.insert(DATABASE_TABLE, null, initialValues); > > } > > > public boolean deleteOption(long rowId) { > > > return mDb.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, > > null) > 0; > > } > > > public Cursor fetchOption(long rowId) throws SQLException { > > > Cursor mCursor = > > > mDb.query(true, DATABASE_TABLE, new String[] > > {KEY_ROWID, > > KEY_TITLE, KEY_BODY}, KEY_ROWID + "=" + rowId, > > null, > > null, null, null, null); > > if (mCursor != null) { > > mCursor.moveToFirst(); > > } > > return mCursor; > > > } > > > public boolean updateOption(long rowId, String title, String body) > > { > > ContentValues args = new ContentValues(); > > args.put(KEY_TITLE, title); > > args.put(KEY_BODY, body); > > > return mDb.update(DATABASE_TABLE, args, KEY_ROWID + "=" + > > rowId, null) > 0; > > } > > > } > > > I don't know if the problem comes from the way the program access the > > database or if database needs permission... > > I am a little bit lost. > > Thank you for your help. > > Michaël --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Beginners" group. To post to this group, send email to android-beginners@googlegroups.com 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 -~----------~----~----~----~------~----~------~--~---