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
-~----------~----~----~----~------~----~------~--~---

Reply via email to