2011-03-21 32 views
0

这是用于android应用程序。第一个调用起作用,而不是第二个调用,它们按顺序调用。没有错误。所有的字符串都应该是。第一个更新正确,但第二个不更新任何值。SQLite更新语句。不是一直在更新

///DOESN'T WORK 
     mDbHelper.updateValue(SaveSlot, item, value1,value2,"S"); 



    public void updateValue(String saveslot, String item, String value1, String value2,String cat) { 
     ContentValues args = new ContentValues(); 
     if (value1 !=null){ 

     args.put(VALUE1, value1); 
     if (value2 !=null){ 
      args.put(VALUE2, value2); 
     }} 
     else if (value2 !=null){ 
     args.put(VALUE2, value2); 
     } 
     mDb.update(DATABASE_PUSHERS_TABLE, args, SAVE_SLOT + "=" + saveslot +" AND " + ITEM +" = "+item+" AND category = "+cat, null); 
     return ; 
    } 

发现了一些错误信息......

INFO/dalvikvm(23920): Uncaught exception thrown by finalizer (will be discarded): 
INFO/dalvikvm(23920): Ljava/lang/IllegalStateException;: Finalizing cursor [email protected] on pushers that has not been deactivated or closed 
INFO/dalvikvm(23920):  at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596) 
INFO/dalvikvm(23920):  at dalvik.system.NativeStart.run(Native Method) 
INFO/dalvikvm(23920): Uncaught exception thrown by finalizer (will be discarded): 
INFO/dalvikvm(23920): Ljava/lang/IllegalStateException;: Finalizing cursor [email protected] on pushers that has not been deactivated or closed 


04-10 01:56:24.091: ERROR/Database(2983): Error updating value1=82 using UPDATE database SET value1=? WHERE save_slot=1 AND item = 98 AND category = S 
+0

你得到什么错误讯息?并且是在表中定义为字符串或数字的项目? – 2011-03-21 04:44:33

+0

发布了什么错误,我可以找到 – Wayner 2011-03-26 07:16:38

+0

是“项目”早些时候定义为一个字符串?数据库更新的模式是什么? – locoboy 2011-03-31 20:09:29

回答

0

把一个单引号周围的变量固定它..

mDb.update(DATABASE_PUSHERS_TABLE, args, SAVE_SLOT + " = '" + saveslot +"' AND " + ITEM +" = '"+item+"' AND category = '"+cat+"'", null);