0

androidのsqlliteデータベースのテーブルcallog.callsの列(cached_name)を更新する必要があります。updateステートメントの使用方法がわかりません。cursor.kindlyhelpを使用してupdateコマンドに関するものを見つけることができません。前もって感謝します。

 //number1 is the phone number against which I need to run update query in db.
 //name is the string which I used to insert against number1..              

      String name=edittext.gettext().tostring();           
        ContentResolver cr = getContentResolver(); 
        Cursor cur = cr.query(CallLog.Calls.CONTENT_URI,
                    null, null, null, null);
        ContentValues value=new ContentValues();

        value.put("CallLog.Calls.CACHED_NAME",name);

        cur.moveToFirst();  
        while(!cur.isLast())
        {                   
              String number=cur.getString(cur.getColumnIndex(CallLog.Calls.NUMBER));                    
              if((number.equals(number1)==true)
              {  
                    try{                   
                         cr.update(CallLog.Calls.CONTENT_URI,value,CallLog.Calls.CACHED_NAME+"=?",null);
                    }
                    catch(Exception e)
                    {
                         e.printStackTrace();
                         System.out.println(e.getStackTrace()); 
                    }
             }//if  
             cur.moveToNext();   
        }//while
4

1 に答える 1

0

基本的に、実際に必要な行は更新だけです。

String name = edittext.getText().toString();
ContentResolver cr = getContentResolver(); 

ContentValues value = new ContentValues();
// Note that there is no "" here. The value is a constant
value.put(CallLog.Calls.CACHED_NAME, name);

cr.update(CallLog.Calls.CONTENT_URI, values, CallLog.Calls.NUMBER+"=?",
    new String[] { number1 });

これは、この生のSQLクエリと同等です。

UPDATE call_log SET cached_name = name WHERE number = number1;

すべての呼び出しを繰り返す必要はありません。それがwhere句の目的です。

また、

while(!cur.isLast())

最後に一致した値を実際に読み取ることができなくなります。そうしないでください。使用する

while (cur.moveToNext())

カーソルを反復処理する必要がある場合(ここでは反復処理しません)

カーソルがどのように機能するか、およびSQLがどのように機能するかを確認することを強くお勧めします。

(また、好奇心から、なぜcallLogテーブルを変更する必要があるのですか?)

于 2011-11-30T13:17:14.947 に答える