2015-08-03 51 views
0

我想根據多行值更新一行,運行應用程序後出現如下錯誤:(致命異常:主 android.database.sqlite.SQLiteException:near「=」:語法錯誤(代碼1):,在編譯:UPDATE表名SET sFollowed = ?,碼= ?,名稱= WHERE船隻名稱=如何更新Android中的sqlite數據庫?

這裏是我的更新方法MyDbhelper類

public boolean update_isFollowed(String strVesselName , String strVesselNotationNumber, String strIsFollowed) { 
     SQLiteDatabase db1 = getReadableDatabase(); 

     ContentValues values=new ContentValues(); 
     values.put(COL_VesselName,strVesselName); 
     values.put(COL_ClassCodeNumber , strVesselNotationNumber); 
     values.put(COL_IsFollowedVessels, strIsFollowed); 

     int id=db1.update(Table_VesselList,values,COL_ClassCodeNumber + "=" +strVesselNotationNumber +" and "+ COL_VesselName +"="+strVesselName,null); 

     return id > 0; 
    } 
+0

檢查strVesselName不爲空。 – Sebastian

回答

1

做這樣的事情

在你的活動

private UpdateDataInDB mUpdateDataInDb; 
mUpdateDataInDb = new UpdateDataInDB(activity); 

// call the update method with updated strings 
mUpdateDataInDb.updateCommentDetails(_name, heading, comment); 

在數據庫類

public void updateCommentDetails(String name, String updatedHeading, 
     String updatedComment) { 
    // TODO Auto-generated method stub 
    mDatabase = mDatabase_handler.getReadableDatabase(); 
    ContentValues args = new ContentValues(); 
    args.put("Heading", updatedHeading); 
    args.put("Comment", updatedComment); 
    mDatabase.update("AddCommentTable", args,"Name" + "= ?", new String[]{ name }); 
    args.clear(); 
} 
+0

感謝它的工作.. – Androiddv

+0

歡迎!請upvote !!! :) –

0

使用正確的WHERE條件字符串值作爲參數。像:

String where = COL_ClassCodeNumber+"=? AND "+COL_VesselName="?"; 
String[] whereArgs = new String[] {String.valueOf(strVesselNotationNumber), 
            String.valueOf(strVesselName)}; 
int id=db1.update(Table_VesselList,values,where,whereArgs);