2013-09-23 94 views
4

我開發的Android應用,其中我需要更新以基於一定的表中的列,其中clause.Here是下面的代碼,SQLite數據庫更新行機器人

public void updatethekeyofweeklycolumn(String profilename, String keystemp) 
{ 
    SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues values = new ContentValues(); 

    values.put(Profile_keysofweekly, keystemp); 

    db.update(TABLE_PROFILE_SETTINGS_FOR_WEEKLY, values,Profile_Name_for_weekly +" = "+profilename, null); 
} 

上面的代碼與where子句一起工作正常,但是它的throw方法與where子句相關。我的查詢是否錯誤?

+0

老兄,你爲什麼不接受人們給你的答案?這不像你應該給他們錢... – gunar

+2

夥計,放鬆。我剛纔看到了你的答案。感謝它的工作。 – Dave

+1

我對棧交換的api沒有太多的瞭解。我所做的只是如果答案有用就投票,如果答案合適,就接受答案。我無法接受不起作用並誤導別人的答案,即使我不付錢對嗎? :)。如果答案是正確的,我肯定會讚揚這個幫助。對不起,男人,不接受我的錯誤答案。 – Dave

回答

14

您需要轉義配置文件名稱。這個一個

db.update(TABLE_PROFILE_SETTINGS_FOR_WEEKLY, values,Profile_Name_for_weekly +" = ?", new String[] {profilename}); 
+11

不應該是db.update(TABLE_PROFILE_SETTINGS_FOR_WEEKLY,values,Profile_Name_for_weekly +「=?」,new String [] {profilename})? – safari

+0

我認爲應該。 –

0

搜索:讓你無論是添加單'字符:

db.update(TABLE_PROFILE_SETTINGS_FOR_WEEKLY, values,Profile_Name_for_weekly +" = '"+ profilename + "'", null); 

或者,選擇我會按照

db.update( 「yourtable」,cvalue, 「Profile_Name_for_weekly =」+「'」+ profilename +「'」,null);

1

對於更一般的幫助瞭解如何更新數據庫行時,documentation竟是有益的這個時候:

SQLiteDatabase db = mDbHelper.getReadableDatabase(); 

// New value for one column 
ContentValues values = new ContentValues(); 
values.put(FeedEntry.COLUMN_NAME_TITLE, title); 

// Which row to update, based on the ID 
String selection = FeedEntry.COLUMN_NAME_ENTRY_ID + " LIKE ?"; 
String[] selectionArgs = { String.valueOf(rowId) }; 

int count = db.update(
    FeedReaderDbHelper.FeedEntry.TABLE_NAME, 
    values, 
    selection, 
    selectionArgs); 

本頁面也是有幫助的:Working with SQLite Database (CRUD operations) in Android

在我來說,我做了一個方法像這樣:

public long updateTime(long rowId) { 

    // get current Unix epoc time in milliseconds 
    long date = System.currentTimeMillis(); 

    SQLiteDatabase db = helper.getWritableDatabase(); // helper is MyDatabaseHelper, a subclass database control class in which this updateTime method is resides 
    ContentValues contentValues = new ContentValues(); 
    contentValues.put(MyDatabaseHelper.DATE_TIME, date); // (column name, new row value) 
    String selection = MyDatabaseHelper.ID + " LIKE ?"; // where ID column = rowId (that is, selectionArgs) 
    String[] selectionArgs = { String.valueOf(rowId) }; 

    long id = db.update(MyDatabaseHelper.FAVORITE_TABLE_NAME, contentValues, selection, 
      selectionArgs); 
    db.close(); 
    return id; 
}