2

I'm trying to create new database using SQLiteOpenHelper.

@Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        sqLiteDatabase.execSQL("CREATE TABLE SecretNumbers ("
                + "id integer primary key autoincrement, "
                + "PhoneNumber text);");

        sqLiteDatabase.execSQL("CREATE TABLE SecretWords ("
                + "id integer primary key autoincrement, "
                + "SecretWord text);");

        sqLiteDatabase.execSQL("CREATE TABLE SecretSMS ("
                + "id integer primary key autoincrement, "
                + "from text, "
                + "body text, "
                + "receivedatetime text, "
                + "isunread integer );" );



    }

on run I'm facing bellow error. Can somebody help me with this?

11-25 22:57:23.329: INFO/Database(1231): sqlite returned: error code = 1, msg = near "from": syntax error
11-25 22:57:23.329: ERROR/Database(1231): Failure 1 (near "from": syntax error) on 0x2aaaf0 when preparing 'CREATE TABLE SecretSMS (id integer primary key autoincrement, from text, body text, receivedatetime text, isunread integer );'.
11-25 22:57:23.349: ERROR/SQLiteOpenHelper(1231): Couldn't open SecretPhoneDatabase for writing (will try read-only):
        android.database.sqlite.SQLiteException: near "from": syntax error: CREATE TABLE SecretSMS (id integer primary key autoincrement, from text, body text, receivedatetime text, isunread integer );
        at android.database.sqlite.SQLiteDatabase.native_execSQL(Native Method)
        at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1763)
        at net.cgrup.SecretPhone.DataBase.DbHelper.onCreate(DbHelper.java:29)
        at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:126)
        at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:187)
        at net.cgrup.SecretPhone.Broadcast.SmsReceiver.onReceive(SmsReceiver.java:31)
        at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:709)
        at android.os.Handler.handleCallback(Handler.java:587)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:123)
        at android.app.ActivityThread.main(ActivityThread.java:3683)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:507)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
        at dalvik.system.NativeStart.main(Native Method)
11-25 22:57:23.369: WARN/dalvikvm(1231): threadid=1: thread exiting with uncaught exception (group=0x40015560)
11-25 22:57:23.399: ERROR/AndroidRuntime(1231): FATAL EXCEPTION: main
        java.lang.RuntimeException: Error receiving broadcast Intent { act=android.provider.Telephony.SMS_RECEIVED (has extras) } in net.cgrup.SecretPhone.Broadcast.SmsReceiver@4051d190
        at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:722)
        at android.os.Handler.handleCallback(Handler.java:587)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:123)
        at android.app.ActivityThread.main(ActivityThread.java:3683)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:507)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
        at dalvik.system.NativeStart.main(Native Method)
        Caused by: android.database.sqlite.SQLiteException: Can't upgrade read-only database from version 0 to 1: /data/data/net.cgrup.SecretPhone/databases/SecretPhoneDatabase
        at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:199)
        at net.cgrup.SecretPhone.Broadcast.SmsReceiver.onReceive(SmsReceiver.java:31)
        at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:709)
        ... 9 more

3 Answers 3

6

from is an SQL keyword. You might want to avoid using it as a column name. If you must use that name, escape it as described here: http://www.sqlite.org/lang_keywords.html

Sign up to request clarification or add additional context in comments.

1 Comment

I recommend sender in place of from, it's Android's name for this particular column.
1

"from" is a reserved SQL keyword, you can't use it as a colum name.

Comments

0

has nothing to do with your problem but I recommend you change "id" by "_id"

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.