sqlite

2012-07-19 14 views
12

में किसी कॉलम में मान बदलें मुझे किसी निश्चित तालिका से कॉलम में कोई मान अपडेट करने की आवश्यकता है। मैं इस की कोशिश की:sqlite

public void updateOneColumn(String TABLE_NAME, String Column, String rowId, String ColumnName, String newValue){ 
       String sql = "UPDATE "+TABLE_NAME +" SET " + ColumnName+ " = "+newValue+" WHERE "+Column+ " = "+rowId; 
       db.beginTransaction(); 
       SQLiteStatement stmt = db.compileStatement(sql); 
       try{ 
        stmt.execute(); 
        db.setTransactionSuccessful(); 
       }finally{ 
        db.endTransaction(); 
       } 

     } 

और मैं इस तरह इस विधि कॉल:

db.updateOneColumn("roadmap", "id_roadmap",id,"sys_roadmap_status_mobile_id", "1"); 

जिसका मतलब है कि मैं स्तंभ sys_roadmap_status_mobile_id में मूल्य 1 सेट करना चाहते हैं कि जब id_roadmap = id.

समस्या यह है कि है कुछ नहीं हुआ। मेरी गलती कहां है?

+0

सबसे पहले, कृपया ऊपर पर पढ़ें एसक्यूएल इंजेक्शन हमले! –

+0

और, आपके कॉलम किस डेटा प्रकार हैं? यदि वे चरित्र प्रकार हैं, तो आप शायद अपने तारों को उद्धृत करना चाहेंगे। आपने यह भी प्रदान नहीं किया है कि 'id' क्या मूल्य या कोई नमूना डेटा है ... –

उत्तर

27

आसान समाधान:

String sql = "UPDATE "+TABLE_NAME +" SET " + ColumnName+ " = '"+newValue+"' WHERE "+Column+ " = "+rowId; 

बेहतर समाधान:

ContentValues cv = new ContentValues(); 
cv.put(ColumnName, newValue); 
db.update(TABLE_NAME, cv, Column + "= ?", new String[] {rowId}); 
+0

मैंने पहले इस समाधान की कोशिश की, लेकिन मान तालिका में सेट नहीं है। – Gabrielle

+1

आप इसे कैसे सत्यापित करते हैं? – WarrenFaith

+0

@ गैब्रिएल देखें कि क्या यह वास्तव में किसी भी पंक्ति को प्रभावित करता है। –

1

नीचे समाधान एकल पंक्ति मान अद्यतन करने के लिए मेरे लिए काम करता है:

public long fileHasBeenDownloaded(String fileName) 
{ 
    SQLiteDatabase db = this.getWritableDatabase(); 

    long id = 0; 

    try { 
     ContentValues cv = new ContentValues(); 
     cv.put(IFD_ISDOWNLOADED, 1); 

     // The columns for the WHERE clause 
     String selection = (IFD_FILENAME + " = ?"); 

     // The values for the WHERE clause 
     String[] selectionArgs = {String.valueOf(InhalerFileDownload.fileName)}; 

     id = db.update(TABLE_INHALER_FILE_DOWNLOAD, cv, selection, selectionArgs); 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return id; 
}