2013-06-05 3 views
0

SQLite 데이터베이스의 테이블을 업데이트해야합니다.두 개의 where 절이있는 SQLite 쿼리

테이블은 AppName (String), StartTime (String) 및 EndTime (String) 열로 구성됩니다.

AppName = app (현재 앱의 이름을 포함하는 변수) 및 EndingTime! = "0"인 레코드의 EndingTime을 업데이트해야합니다.

단일 Where 절이 정상적으로 작동했지만 두 개의 where 절을 포함하는 표준 절차를 알지 못합니다. 나는 다음과 같은 방법으로 시도했지만 결과는 없었다.

return db.update(DATABASE_TABLE, args, "AppName=? AND EndingTime<>?", new String[]{AppName,"0"})>0 

제발 도와주세요.

답변

0
AND EndingTime != "0" 

는 말한다. 첫 번째 경우에

, 단순히 그렇지 않으면 당신이하지 않는 등 공급 endingTime 다음 제로, 당신은 값을 저장 다른 경우로, 데이터베이스를 업데이트하기 전에 if 문을 수행

public static void updateEndingTime (final Context context, 
    String appName, int endingTime) { 
    //open your database object, blah, blah 

    if (endingTime != 0) { 
     //save the data 
    } 
} 

이 있다면 두 번째 경우, 두 단어를 'And'단어와 병합하면됩니다.

public static int updateEndingTime (final Context context, 
    String appName, int endingTime) { 
    //open your database object, blah, blah 
    String where = "AppName = " + appName + " and EndingTime != 0 "; 
    return mDatabase.update(DATABASE_TABLE, args, where, null); 
} 

args이 올바르게 구조화 된 ContentValues ​​개체인지 확인하십시오.

+0

대단히 감사합니다. 두 번째 경우였습니다. – madhu

0

onUpgrade() 메소드에 ALTER TABLE 함수를 사용할 수 있습니다.

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    // If you need to add a column 
    if (newVersion > oldVersion) { 
     db.execSQL("ALTER TABLE foo ADD COLUMN new_column INTEGER DEFAULT 0"); 
    } 
} 
+0

죄송합니다. 내 질문에 오해 하셨을 것입니다. EndingTime이라는 열을 업데이트해야합니다. 열은 이미 테이블 구조에 있습니다. 삽입하는 동안 EndingTime으로 "0"을 삽입합니다. EndingTime을 얻을 때이 "0"을 현재 값으로 업데이트해야합니다. – madhu

0

를 사용해보십시오! = 대신 <>의.

0

<> 대신! =를 사용해야한다는 사실과는 별도로 수행 할 작업이 있습니다. 내 SQL 문에서 WHERE 절이 두 개 필요하면 AND로도 결합합니다. 그렇게하는 데 아무런 해가 없습니다. 어쨌든 매개 변수가있는 쿼리를 사용하고 있기 때문에 쿼리를 SQL 삽입 공격에 노출시키지 않습니다.

public static void updateEndingTime (final Context context, 
    String appName, int endingTime) {} 

을하거나 EndingTime을 의미하는 경우 이미 응용 프로그램 이름의 데이터베이스에 저장 : 당신이 방법에 제공된 EndingTime를 참조하는 경우 잘 모르겠어요

+0

다음 코드는 작동하지 않습니다 !! db.update (DATABASE_TABLE, args, "(AppName =? 및 EndingTime! =?)", new String [] {AppName, "0"}) – madhu

관련 문제