Error: Causada por: android.database.sqlite.SQLiteException: cerca de "añadir": error de sintaxis (código 1):

ava:

Tengo una tabla en la base de datos SQLite. En Android Studio tengo este 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

Aquí está mi 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;
}
    }

Y:

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];
    }
};

    }

Y 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

No sé lo que está mal. por favor, ayúdame. gracias de antemano.

deHaar:

No se puede utilizar addo ADDcomo una clave, ya que es una palabra clave reservada en SQLite (Mira a todos ellos aquí ).

Debe utilizar una alternativa, tal vez added(mal, muy similares a add) o plusni nada.

Trate de reemplazar la addde public static final String KEY_ADD = "add";por una diferente no reservados String.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=223938&siteId=1
Recomendado
Clasificación