Error: Caused by: android.database.sqlite.SQLiteException: near "add": syntax error (code 1):

ava :

I have a table in SQLite database. In Android Studio I have this error:

Caused by: android.database.sqlite.SQLiteException: near "add": syntax 
           error (code 1): , while compiling: SELECT id, onvan, matn, 
             nevisande, tasvir, fav, khande, ezafi, address, pdfname, 
            downloaded, add, buy FROM dastanha

Here is my DataBaseAdapter :

public class DBAdapter {

public static final String KEY_ID = "id";
public static final String KEY_ONVAN = "onvan";
public static final String KEY_MATN = "matn";
public static final String KEY_NEVIS = "nevisande";
public static final String KEY_IMG = "tasvir";
public static final String KEY_FAV = "fav";
public static final String KEY_KHAND = "khande";
public static final String KEY_EXTRA = "ezafi";
public static final String KEY_ADDRESS = "address";
public static final String KEY_PDFNAME = "pdfname";
public static final String KEY_DOWNLOADED = "downloaded";
public static final String KEY_ADD = "add";
public static final String KEY_BUY = "buy";
public static final String DATABASE_NAME = "dastanha";
public static final String DATABASE_TABLE = "dastanha";
public static final String TAG = "book";


static final String CREATE_TABLE = "CREATE TABLE "+DATABASE_TABLE+" ("+KEY_ID+" INTEGER PRIMARY KEY  NOT NULL ,"
        +KEY_ONVAN+" TEXT,"+KEY_MATN+" TEXT,"+KEY_NEVIS+" TEXT,"
        + KEY_IMG+" TEXT,"+KEY_FAV+" INTEGER NOT NULL  DEFAULT (0) ,"
        +KEY_KHAND+" INTEGER NOT NULL  DEFAULT (0) ,"+KEY_EXTRA+" TEXT,"
        +KEY_ADDRESS+" TEXT,"+KEY_PDFNAME+" TEXT DEFAULT (null) , "
        +KEY_DOWNLOADED+" INTEGER NOT NULL  DEFAULT 0, "
        +KEY_ADD+" INTEGER NOT NULL  DEFAULT 0, "
        +KEY_BUY+" INTEGER NOT NULL  DEFAULT 0)";

String[] yek_name = new String[] { KEY_ID, KEY_ONVAN, KEY_MATN, KEY_NEVIS,
        KEY_IMG, KEY_FAV, KEY_KHAND, KEY_EXTRA, KEY_ADDRESS, KEY_PDFNAME, KEY_DOWNLOADED, KEY_ADD, KEY_BUY };

final Context context;

DatabaseHelper DBHelper;
SQLiteDatabase db;

public DBAdapter(Context ctx) {
    this.context = ctx;
    DBHelper = new DatabaseHelper(context);
}

private static class DatabaseHelper extends SQLiteOpenHelper {
    DatabaseHelper(Context context) {
        // DATABASE_VERSION = 8
        super(context, DATABASE_NAME, null, 8);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        try {
            db.execSQL(CREATE_TABLE);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    @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 " + DATABASE_TABLE);
        onCreate(db);
    }
}
public DBAdapter open() throws SQLException {
    db = DBHelper.getWritableDatabase();
    return this;
}
public void close() {
    DBHelper.close();
}
public List<Dastan> getAllContacts() {

    Cursor cursor = db.query(DATABASE_TABLE, yek_name, null, null, null,
            null, null);
    List<Dastan> nams = cursorToList(cursor);
    return nams;
}
private List<Dastan> cursorToList(Cursor cursor) {
    List<Dastan> nams = new ArrayList<Dastan>();
    if (cursor.getCount() > 0) {
        while (cursor.moveToNext()) {
            Dastan nam = new Dastan();
            nam.setId(cursor.getInt(cursor.getColumnIndex(KEY_ID)));
            nam.setOnvan(cursor.getString(cursor.getColumnIndex(KEY_ONVAN)));
            nam.setMatn(cursor.getString(cursor.getColumnIndex(KEY_MATN)));
            nam.setNevisande(cursor.getString(cursor.getColumnIndex(KEY_NEVIS)));
            nam.setTasvir(cursor.getString(cursor.getColumnIndex(KEY_IMG)));
            nam.setFav(cursor.getInt(cursor.getColumnIndex(KEY_FAV)));
            nam.setKhande(cursor.getInt(cursor.getColumnIndex(KEY_KHAND)));
            nam.SetEzafi(cursor.getString(cursor.getColumnIndex(KEY_EXTRA)));
            nam.SetAddress(cursor.getString(cursor.getColumnIndex(KEY_ADDRESS)));
            nam.SetPdfname(cursor.getString(cursor.getColumnIndex(KEY_PDFNAME)));
            nam.setDownloaded(cursor.getInt(cursor.getColumnIndex(KEY_DOWNLOADED)));
            nam.setAdd(cursor.getInt(cursor.getColumnIndex(KEY_ADD)));
            nam.setBuy(cursor.getInt(cursor.getColumnIndex(KEY_BUY)));

            nams.add(nam);
        };
    return nams;
}
public Dastan getContact(int new_id) throws SQLException {

    List<Dastan> nams = new ArrayList<Dastan>();

    Cursor cursor = db.query(true, DATABASE_TABLE, yek_name, KEY_ID
            + " == '" + new_id + "'", null, null, null, null, null);
    Dastan nam = new Dastan();
    if (cursor != null) {
        cursor.moveToFirst();
        nams = cursorToList(cursor);
    }
    return nams.get(0);
}

// /search
public List<Dastan> findContacts(String nam, String row)
        throws SQLException {
    Cursor cursor = db.query(true, DATABASE_TABLE, yek_name, row
            + " LIKE '%" + nam + "%'", null, null, null, null, null);
    List<Dastan> nams = cursorToList(cursor);
    return nams;
}

// /fav?
public List<Dastan> findFAVContacts() throws SQLException {
    Cursor cursor = db.query(true, DATABASE_TABLE, yek_name, KEY_FAV
            + " == " + 1 + "", null, null, null, null, null);

    List<Dastan> nams = cursorToList(cursor);
    return nams;
}
public List<Dastan> findKhandeContacts() throws SQLException {
    Cursor cursor = db.query(true, DATABASE_TABLE, yek_name, KEY_KHAND
            + " == " + 1 + "", null, null, null, null, null);

    List<Dastan> nams = cursorToList(cursor);
    return nams;
}

// ---updates a contact---
public boolean updateContact(Dastan up_nam) {
    ContentValues args = new ContentValues();
    args.put(KEY_ID, up_nam.getId());
    args.put(KEY_ONVAN, up_nam.getOnvan());
    args.put(KEY_MATN, up_nam.getMatn());
    args.put(KEY_NEVIS, up_nam.getNevisande());
    args.put(KEY_IMG, up_nam.getTasvir());
    args.put(KEY_FAV, up_nam.getFav());
    args.put(KEY_KHAND, up_nam.getKhande());
    args.put(KEY_EXTRA, up_nam.getEzafi());
    args.put(KEY_ADDRESS, up_nam.getAddress());
    args.put(KEY_PDFNAME, up_nam.getPdfname());
    args.put(KEY_DOWNLOADED, up_nam.getDownloaded());
    args.put(KEY_ADD, up_nam.getAdd());
    args.put(KEY_BUY, up_nam.getBuy());

    return db.update(DATABASE_TABLE, args, KEY_ID + "=" + up_nam.getId(),
            null) > 0;
}
    }

And:

public class Dastan implements Parcelable{

private int id;
private String onvan;
private String matn;
private String nevisande;
private String tasvir;
private int fav;
private int khande;
private String ezafi;
private String address;
private String pdfname;
private int downloaded;
private int add;
private int buy;


public Dastan (){

}

public int getId(){
    return id;
}
public void setId(int id){
    this.id = id;
}
public String getOnvan(){
    return onvan;
}
public void setOnvan(String onvan){
    this.onvan = onvan;
}
public String getMatn (){
    return matn;
}
public void setMatn(String matn){
    this.matn = matn;
}
public String getNevisande(){
    return nevisande;
}
public void setNevisande(String nevisande){
    this.nevisande = nevisande;
}
public String getTasvir(){
    return tasvir;
}
public void setTasvir(String tasvir){
    this.tasvir = tasvir;
}
public int getFav(){
    return fav;
}
public void setFav(int fav){
    this.fav = fav;
}
public int getKhande(){
    return khande;
}
public void setKhande(int khande){
    this.khande = khande;
}
public String getEzafi(){
    return ezafi;
}
public void SetEzafi(String ezafi){
    this.ezafi = ezafi;
}
public String getAddress(){
    return address;
}
public void SetAddress(String address){
    this.address = address;
}
public String getPdfname(){
    return pdfname;
}
public void SetPdfname(String pdfname){
    this.pdfname = pdfname;
}
public int getDownloaded(){
    return downloaded;
}
public void setDownloaded(int downloaded){this.downloaded = downloaded;}
public int getAdd(){return add;}
public void setAdd(int add){this.add = add;}
public int getBuy(){return buy;}
public void setBuy(int buy){this.buy = buy;}


public Dastan (Parcel in){
    id = in.readInt();
    onvan = in.readString();
    matn = in.readString();
    nevisande = in.readString();
    tasvir = in.readString();
    fav = in.readInt();
    khande = in.readInt();
    ezafi=in.readString();
    address=in.readString();
    pdfname=in.readString();
    downloaded = in.readInt();
    add = in.readInt();
    buy = in.readInt();

}
@Override
public int describeContents() {
    // TODO Auto-generated method stub
    return 0;
}

@Override
public void writeToParcel(Parcel dest, int arg1) {
    // TODO Auto-generated method stub
    dest.writeInt(id);
    dest.writeString(onvan);
    dest.writeString(matn);
    dest.writeString(nevisande);
    dest.writeString(tasvir);
    dest.writeInt(fav);
    dest.writeInt(khande);
    dest.writeString(ezafi);
    dest.writeString(address);
    dest.writeString(pdfname);
    dest.writeInt(downloaded);
    dest.writeInt(add);
    dest.writeInt(buy);

}
public static final Parcelable.Creator<Dastan> CREATOR = new Parcelable.Creator<Dastan>() {

    @Override
    public Dastan createFromParcel(Parcel arg0) {
        // TODO Auto-generated method stub
        return new Dastan(arg0);
    }

    @Override
    public Dastan[] newArray(int arg0) {
        // TODO Auto-generated method stub
        return new Dastan[arg0];
    }
};

    }

And Logcat:

    08-16 14:10:24.038 14377-14377/com.example.ava.book3 E/SQLiteLog: (1) near "add": syntax error
    08-16 14:10:24.039 14377-14377/com.example.ava.book3 D/AndroidRuntime: Shutting down VM
    08-16 14:10:24.039 14377-14377/com.example.ava.book3 E/AndroidRuntime: FATAL EXCEPTION: main
                                                                   Process: 
    com.example.ava.book3, PID: 14377
                                                                   java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.ava.book3/com.example.ava.book3.MainActivity}: android.database.sqlite.SQLiteException: near "add": syntax error (code 1): , while compiling: SELECT id, onvan, matn, nevisande, tasvir, fav, khande, ezafi, address, pdfname, downloaded, add, buy FROM dastanha
                                                                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
                                                                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
                                                                       at android.app.ActivityThread.-wrap11(ActivityThread.java)
                                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
                                                                       at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                       at android.os.Looper.loop(Looper.java:148)
                                                                       at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                       at java.lang.reflect.Method.invoke(Native Method)
                                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                                    Caused by: android.database.sqlite.SQLiteException: near "add": syntax error (code 1): , while compiling: SELECT id, onvan, matn, nevisande, tasvir, fav, khande, ezafi, address, pdfname, downloaded, add, buy FROM dastanha
                                                                       at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
                                                                       at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:887)
                                                                       at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:498)
                                                                       at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
                                                                       at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
                                                                       at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
                                                                       at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
                                                                       at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1316)
                                                                       at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1163)
                                                                       at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1034)
                                                                       at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1202)
                                                                       at com.example.ava.book3.DBAdapter.getAllContacts(DBAdapter.java:126)
                                                                       at com.example.ava.book3.MainActivity.onCreate(MainActivity.java:118)
                                                                       at android.app.Activity.performCreate(Activity.java:6237)
                                                                       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
                                                                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
                                                                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                                                                       at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                                                                       at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                       at android.os.Looper.loop(Looper.java:148) 
                                                                       at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                       at java.lang.reflect.Method.invoke(Native Method) 
                                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
        08-16 14:10:24.063 1727-2422/system_process W/ActivityManager:         Force finishing activity com.example.ava.book3/.MainActivity

I do not know what is wrong. please help me. thank in advance.

deHaar :

You cannot use add or ADD as a key because it is a reserved keyword in SQLite (watch them all here).

You should use an alternative, maybe added (bad, very similar to add) or plus or anything.

Try replacing the add in public static final String KEY_ADD = "add"; by a different non-reserved String.

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=113330&siteId=1