2017-10-18 6 views
0

が機能していない:中SQLiteの更新は私が多くのテーブルを作成し、任意の問題wihtoutデータを挿入するが、私は、データを更新する場合、データは問題なく更新されていないログに</p> <p>コードを表示され、アプリはデータベースが含まれている必要があり

public int updateData(String tableName,Long id, int fav) { 
    SQLiteDatabase database = this.getWritableDatabase(); 
    ContentValues contentValues = new ContentValues(); 

    contentValues.put("isFav",fav); 

    String myid= String.valueOf(id); 

    Log.w("myApp", myid+ " fav = "+fav); 
    int i = database.update(tableName, contentValues, "ID=?", new String[]{myid}); 
    if (i > 0) 
     return 1; 
    else return 0; 

} 

iはlistAdapter eは別のクラスがある:クラスDB iは、次のコード

@Override 
public void onCreate(SQLiteDatabase db) { 
db.execSQL("create table table1(id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT ,detail TEXT ,source TEXT ,isFav INTEGER)"); 
    db.execSQL("create table table2(id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT ,detail TEXT,source TEXT ,isFav INTEGER)"); 
    db.execSQL("create table table3(id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT ,detail TEXT,source TEXT, isFav INTEGER)"); 
    db.execSQL("create table fav (id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT ,detail TEXT,source TEXT ,isFav INTEGER)"); 

} 

、この更新方法コードとしてのonCreateを有するSqliteOpenHelperを拡張しますxtends ArrayAdapterこのクラスから更新したいです。 ボタンをクリックするが、それは を更新する必要があるときgetViewメソッドはonClickListener含まれています:

int a=db.updateData(sh.getString("listType","table1"),arrayList.get(position).getId(),1); 

は何..私はそれがwithotの問題を配信(sh.getString( "listType(リストタイプ)"、 "TABLE1"))テーブル名を確実なものとしました私の助けてください

+0

'getId()'メソッドを使用して正しいIDを渡していることを確認しましたか?また、私はsqliteは大文字と小文字を区別しないと思うが、単に "ID"を "id"で置き換えてテストするだけです。 –

+0

はい私はgetId()を確実にしました –

+0

あなたは100%正確であると確信していますか?私は、 '' csr = database.query(tableName、null、 "ID =?"、新しいString [] {m​​yid}、null、null、null、null);を実行することをお勧めします。 ');} '} – MikeT

答えて

0

あなたのIDは文字列としてではなく整数として渡す必要があります。 これを試すことができます

int i = database.update(tableName, contentValues, "ID='?'", new String[]{myid}); 
関連する問題