S.P.
S.P.

Reputation: 2564

Android SQLiteException: near "(": syntax error (code 1):

I've spend some time in try to fix this, but I don't know where is the problem in my sql create entries..

The error:

android.database.sqlite.SQLiteException: near "(": syntax error (code 1): , while compiling: CREATE VIRTUAL TABLE CommerceName ( _id TEXT  PRIMARY KEY,id INTEGER,name TEXT,category TEXT,imageref TEXT )

Thanks in advance

CODE:

 public static final String SQL_CREATE_ENTRIES =
            "CREATE VIRTUAL TABLE " + CommerceSearchReaderDbHelper.CommerceNameSearchEntry.TABLE_NAME + " ( " +
                    CommerceSearchReaderDbHelper.CommerceNameSearchEntry._ID            + TEXT_TYPE +"  PRIMARY KEY," +
                    CommerceSearchReaderDbHelper.CommerceNameSearchEntry.COLUMN_ID      + INTEGER_TYPE + COMMA_SEP +
                    CommerceSearchReaderDbHelper.CommerceNameSearchEntry.COLUMN_NAME    + TEXT_TYPE + COMMA_SEP  +
                    CommerceSearchReaderDbHelper.CommerceNameSearchEntry.COLUMN_CATEGORY+ TEXT_TYPE + COMMA_SEP  +
                    CommerceSearchReaderDbHelper.CommerceNameSearchEntry.COLUMN_IMAGEREF + TEXT_TYPE +
                    " )";

    public static final String SQL_DELETE_ENTRIES =
            "DROP TABLE IF EXISTS " + CommerceSearchReaderDbHelper.CommerceNameSearchEntry.TABLE_NAME;

    public static abstract class CommerceNameSearchEntry implements BaseColumns {
        public static final String TABLE_NAME       = "CommerceName";
        public static final String COLUMN_ID        = SearchManager.SUGGEST_COLUMN_INTENT_EXTRA_DATA;
        public static final String COLUMN_NAME      = SearchManager.SUGGEST_COLUMN_TEXT_1;
        public static final String COLUMN_CATEGORY  = SearchManager.SUGGEST_COLUMN_TEXT_2;
        public static final String COLUMN_IMAGEREF  = SearchManager.SUGGEST_COLUMN_ICON_1;
    }

Upvotes: 0

Views: 624

Answers (2)

Dave
Dave

Reputation: 4291

If you really intend to create a virtual table, then you are missing "USING module_name". See here.

If you instead do not intend to create a virtual table (which is likely since you are using Android), then you should remove "VIRTUAL" from the CREATE statement. The syntax is here.

Upvotes: 1

Joshua
Joshua

Reputation: 651

You are missing the spaces between your CommerceSearchReaderDbHelper.CommerceNameSearchEntry._ID and TEXT_TYPE, etc. Use this instead:

public static final String SQL_CREATE_ENTRIES =
            "CREATE VIRTUAL TABLE " + 
             CommerceSearchReaderDbHelper.CommerceNameSearchEntry.TABLE_NAME + " ( " + CommerceSearchReaderDbHelper.CommerceNameSearchEntry._ID          
             + " " + TEXT_TYPE +"  PRIMARY KEY," +
                    CommerceSearchReaderDbHelper.CommerceNameSearchEntry.COLUMN_ID + " " + INTEGER_TYPE + COMMA_SEP +
                    CommerceSearchReaderDbHelper.CommerceNameSearchEntry.COLUMN_NAME + " " + TEXT_TYPE + COMMA_SEP  +
                    CommerceSearchReaderDbHelper.CommerceNameSearchEntry.COLUMN_CATEGORY + " " + TEXT_TYPE + COMMA_SEP  +
                    CommerceSearchReaderDbHelper.CommerceNameSearchEntry.COLUMN_IMAGEREF + " " + TEXT_TYPE +
             " );";

Upvotes: 1

Related Questions