2014-03-31 66 views
0

的价值我是比较新的,在Android世界使用SQLite和我目前我在我的SQLite数据库建立类似如下:安卓:如何改变源码列

db.execSQL("CREATE TABLES " + DATABASE_TABLE + " (" + KEY_ROWID 
        + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_LOCKERNUMBER 
        + " TEXT NOT NULL, " + KEY_STATUS + " INTEGER DEFAULT 0, " 
        + KEY_PIN + " INTEGER DEFAULT 0);"); 

和我有以下方法将数据插入到数据库:

// function to add lockers to database 
    public long createLockerEntry(String lockerNumber, int status) { 
     ContentValues cv = new ContentValues(); 
     cv.put(KEY_LOCKERNUMBER, lockerNumber); 
     cv.put(KEY_STATUS, status); 
     return ourDatabase.insert(DATABASE_TABLE, null, cv); 
    } 

    // function to create a pin for the locker 
    public void createPin(String lockerNumber, int pin, int status) { 

    } 

    // function to remove pin 
    public void removePin(String lockerNumber, int pin, int status) { 

    } 

我的意图是为在一定储物柜号码添加PIN号码的方法中的KEY_PIN列创建PIN,然后更改状态值1.我假设我会使用where子句声明,但我不完全确定synta x或者如果这是写入方法。有什么建议么?

回答

1

你想用的方法更新()
您可以通过搜索“更新”此页上读到它:

// function to create a pin for the locker 
public void createPin(tring lockerNumber, int pin, int status) { 
    ContentValues cv = new ContentValues() 
    cv.put(KEY_PIN, pin); 
    cv.put(KEY_STATUS, status); 
    ourDatabase.update(DATABASE_TABLE, cv, KEY_LOCKERNUMBER + " = ?" 
        , new String[] {lockerNumber}); 
} 
:使用这将是

http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html

的一种方式

+0

我能看到一个例子,所以我更了解它吗?是这样的:我们的数据库.update(DATABASE_TABLE,cv,KEY_LOCKERNUMBER +“=?”, \t \t \t \t new String [] {lockerNumber}); – JohnnyWineShirt

+0

@JonathanDicamillo:是的。事实上,你的例子甚至更好,因为它使用查询参数。 – njzk2

+0

我同意where-args方法更好,所以我将它合并到我的示例中。 –

0

下面是一个切换条目值的示例。它是一个用作二进制的int值(即1或0)。 两种方法checkAsWildTest和uncheckAsWildTest。

public void checkAsWildTest(Cursor c, int val) { 

    assertDbOpen(); 
    String[] _params = { String.valueOf(c.getInt(ID_COLUMN)) }; 
    //next 4 lines are just for debug 
    log(".uncheckAsWildTest(), " + "c.getCount() = " + c.getCount()); 
    log("row selected = " + c.getInt(ID_COLUMN)); 
    log("cursor content: " + c.getString(ANSWERS_RESPONSE_COLUMN)); 
    log("cursor columns" + Arrays.toString(c.getColumnNames())); 

    ContentValues cv = new ContentValues(); 
    cv.put(KEY_ANSWERS_CHECKED, val); 
    db.update(ANSWERS_TABLE, cv, "_id=?", _params); 
} 

public void uncheckAsWildTest(Cursor c) { 
    assertDbOpen(); 
    int unchecked = 0; 
    String[] _params = { String.valueOf(c.getInt(ID_COLUMN)) }; 
    //next 4 lines are just for debug 
    log(".uncheckAsWildTest(), " + "c.getCount() = " + c.getCount()); 
    log("column selected = " + c.getInt(ID_COLUMN)); 
    log("cursor content: " + c.getString(ANSWERS_RESPONSE_COLUMN)); 
    log("cursor columns" + Arrays.toString(c.getColumnNames())); 

    ContentValues cv = new ContentValues(); 
    cv.put(KEY_ANSWERS_CHECKED, unchecked); 
    db.update(ANSWERS_TABLE, cv, "_id=?", _params); 
} 

我相信你可以使用它,并为你的目的进行修改。