Android重复值更新

时间:2014-07-08 07:04:44

标签: android database android-sqlite

我正在使用SQLite。我成功创建了一个数据库,我可以在数据库中输入一些值。现在我想检查重复值。有关详细信息,例如,我第一次输入:

Tittle: dev 
Description : job
Price :2

第二次我输入这个重复的值简单我想只改变Price值。我编写了代码,但我无法更改重复值'价格

这是一个databasehelper java类:

private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "MainStradaDB4";
private static final String TABLE_CONTACTS = "CardTable1";
public static final String KEY_ID = "id";
private static final String KEY_Tittle = "name";
private static final String KEY_Description = "description";
private static final String KEY_Price = "price";
private static final String KEY_Counter = "counter";
private static final String KEY_Image = "image";
private final ArrayList<Contact> contact_list = new ArrayList<Contact>();
public static SQLiteDatabase db;

public DatabaseHandler(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
    String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "("
            + KEY_ID + " INTEGER PRIMARY KEY," + KEY_Tittle + " TEXT,"

            + KEY_Description + " TEXT,"

            + KEY_Price + " TEXT,"

            + KEY_Counter + " TEXT,"

            + KEY_Image + " TEXT"

            + ")";
    db.execSQL(CREATE_CONTACTS_TABLE);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS);
    onCreate(db);
}

// Adding new contact
public void Add_Contact(Contact contact) {
    db = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    if (!somethingExists(contact.getTitle())) {

        values.put(KEY_Tittle, contact.getTitle());
        values.put(KEY_Description, contact.getDescription());
        values.put(KEY_Price, contact.getPrice());

        values.put(KEY_Counter, contact.getCounter());
        values.put(KEY_Image, contact.getImage());


        db.insert(TABLE_CONTACTS, null, values);

        Log.e("Table Result isss", String.valueOf(values));
        db.close(); // Closing database connection

    }
    else
    {
        Update_Contact(contact);
    }


}

public void deleteUser(String userName) {
    db = this.getWritableDatabase();
    try {
        db.delete(TABLE_CONTACTS, "name = ?", new String[] { userName });

    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        db.close();
    }
}



public int Update_Contact(Contact contact) {
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put(KEY_Counter, contact.getCounter());

    // updating row
    return db.update(TABLE_CONTACTS, values, KEY_ID + " = ?",
            new String[] { String.valueOf(contact.getID()) });
}



// Getting single contact
Contact Get_Contact(int id) {
    SQLiteDatabase db = this.getReadableDatabase();

    Cursor cursor = db.query(TABLE_CONTACTS,
            new String[] { KEY_ID, KEY_Tittle, KEY_Description, KEY_Price,
                    KEY_Counter, KEY_Image }, KEY_ID + "=?",
            new String[] { String.valueOf(id) }, null, null, null);
    if (cursor != null)
        cursor.moveToFirst();



    Contact contact = new Contact(Integer.parseInt(cursor.getString(0)),
            cursor.getString(1), cursor.getString(2), cursor.getString(3),
            cursor.getString(4), cursor.getString(5));
    // return contact
    cursor.close();
    db.close();

    return contact;
}

public boolean somethingExists(String x) {
    Cursor cursor = db.rawQuery("select * from " + TABLE_CONTACTS
            + " where name like '%" + x + "%'", null);
    boolean exists = (cursor.getCount() > 0);

    Log.e("Databaseeeeeeeee", String.valueOf(cursor));
    cursor.close();
    return exists;
}

public ArrayList<Contact> Get_Contacts() {
    try {
        contact_list.clear();
        String selectQuery = "SELECT  * FROM " + TABLE_CONTACTS;

        SQLiteDatabase db = this.getWritableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);

        if (cursor.moveToFirst()) {
            do {
                Contact contact = new Contact();
                contact.setID(Integer.parseInt(cursor.getString(0)));
                contact.setTitle(cursor.getString(1));

                contact.setDescription(cursor.getString(2));

                contact.setPrice(cursor.getString(3));
                contact.setCounter(cursor.getString(4));

                contact.setImage(cursor.getString(5));

                contact_list.add(contact);
            } while (cursor.moveToNext());

        }

        cursor.close();
        db.close();
        return contact_list;
    } catch (Exception e) {

        Log.e("all_contact", "" + e);
    }

    return contact_list;
}
我在做错了吗?如果有人知道解决方案帮助我 感谢

1 个答案:

答案 0 :(得分:1)

Try this one:-


  public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" +
                KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                KEY_HOUR + " TEXT NOT NULL, " +
                KEY_DAY + " TEXT NOT NULL, " +
                KEY_LOCATION + " TEXT NOT NULL, " +
                KEY_SUBJECT + " TEXT NOT NULL, " +
                KEY_START + " TEXT NOT NULL, " +
                KEY_END + " TEXT NOT NULL, " +
                "UNIQUE (" + KEY_DAY + ", " + KEY_HOUR + ") ON CONFLICT ROLLBACK);"
        );