2016-01-07 53 views
0

我一直在嘗試更新我的sqLite數據庫中的數據,但是當我單擊更新按鈕時,它只會回到上一頁,並且沒有任何數據變化,我的代碼中沒有錯誤..請檢查我的代碼謝謝。android:更新Sqlite數據庫中的數據

DatabaseHelper類:

public void updateData(long rowId, String new_question, String new_ans1, String new_ans2, String new_ans3, String new_ans4, SQLiteDatabase sqLiteDatabase) 
    { 
    ContentValues contentValues = new ContentValues(); 

     contentValues.put(AdminContact.Question.COLUMN_QUESTION, new_question); 
     contentValues.put(AdminContact.Question.COLUMN_ANSWER1, new_ans1); 
     contentValues.put(AdminContact.Question.COLUMN_ANSWER2, new_ans2); 
     contentValues.put(AdminContact.Question.COLUMN_ANSWER3, new_ans3); 
     contentValues.put(AdminContact.Question.COLUMN_ANSWER4, new_ans4); 

     // String selection = AdminContact.Question.TABLE_QUIZ + " LIKE ?"; 
     //String[] selection_arg = {new_question}; 
     sqLiteDatabase.update(AdminContact.Question.TABLE_QUIZ, contentValues, AdminContact.Question.ID + "=" + rowId, null); 


    } 

my Update class: 

public void updateData(View view) 
    { 
    helper = new DatabaseHelper(this); 
     sqLiteDatabase = helper.getWritableDatabase(); 

     String question, ans1, ans2, ans3, ans4; 

     question = New_Question.getText().toString(); 
     ans1 = New_Ans1.getText().toString(); 
     ans2 = New_Ans2.getText().toString(); 
     ans3 = New_Ans3.getText().toString(); 
     ans4 = New_Ans4.getText().toString(); 
long rowId = 0; 
     helper.updateData(rowId,question,ans1,ans2,ans3,ans4,sqLiteDatabase); 
     Toast.makeText(getApplicationContext()," Successfully Updated", Toast.LENGTH_LONG).show(); 
     finish(); 

    } 

回答

0

我在更新數據庫表格時遇到同樣的問題。然後我嘗試下面的代碼。它適用於我 試試這個代碼。

DatabaseHelper類

public class DatabaseHelper extends SQLiteOpenHelper{ 
Context context; 

// change your database details here; 

String db_name = "Database name"; 
String db_version = "Databse version"; 
String tbl_name = "Table name"; 
int col_row_id = "row id col"; 
String col_question = "Question col name"; 
String col_ans_1 = "answer 1 col"; 
String col_ans_2 = "answer 2 col"; 
String col_ans_3 = "answer 3 col"; 
String col_ans_4 = "answer 4 col"; 

    public DatabaseHelper(Context context) { 
     super(context, db_name, null, db_version); 

     this.context = context; 

    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     String query = "create table " + tbl_name+ "(" + 
       int_col_row+ " integer primary key autoincrement, " + 
       col_question+ " text, "+ 
       col_ans_1+ " text, "+ 
       col_ans_2+ " text, "+ 
       col_ans_3+ " text, "+ 
       col_ans_4+ " text, "+ 
       ");"; 

     db.execSQL(query); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 

     String query = "drop table if exists "+tbl_name; 
     db.execSQL(query); 
     onCreate(db); 
    } 

    public void updateData(int rowId, String new_question, String new_ans1, String new_ans2, String new_ans3, String new_ans4) { 
     String query = "update "+tbl_name+ " set "+ 
     col_question+"=\""+new_question+"\","+ 
     col_answer1+"=\""+answer1+"\","+ 
     col_answer2+"=\""+answer2+"\","+ 
     col_answer3+"=\""+answer3+"\","+ 
     col_answer4+"=\""+answer4+"\""+ 
     " where "+col_row_id+"=\""+rowId+"\""; 

     SQLiteDatabase db = getWritableDatabase(); 
     db.execSQL(query); 

     db.close(); 
    } 
} 

更新類

public class update{ 

// initialise New_Question, New_Ans1, New_Ans2, New_Ans3, New_Ans4 as final variables. Also set onclick function of buttion to updateData 

public void updateData(View view){ 
     helper = new DatabaseHelper(view.getContext()); 

     String question, ans1, ans2, ans3, ans4; 

     question = New_Question.getText().toString(); 
     ans1 = New_Ans1.getText().toString(); 
     ans2 = New_Ans2.getText().toString(); 
     ans3 = New_Ans3.getText().toString(); 
     ans4 = New_Ans4.getText().toString(); 
     int rowId = 0; 

     helper.updateData(rowId,question,ans1,ans2,ans3,ans4); 
} 

} 
+0

先生您的代碼是沒有錯誤,但數據仍然不會更新請檢查我的更新類,如果他們的錯誤先生。當我點擊更新按鈕時,它只會回到前一頁謝謝先生。 –

+0

我已更新我的代碼。請試試這個。你應該正確初始化所有變量。還要嘗試記錄每一行,並檢查代碼被破壞的位置 –

+0

Sir Ijas Ahamed,請幫助我。有沒有關於如何查看從Sqlite到Button或Textview的數據的鏈接?我無法啓動我的qiuz項目,如何玩隨機問題。請給我你的幫助.. –

0

我沒有想法大約長,但我用這個代碼更新字符串值, 試試這個代碼DatabaseHelper類:
return sqLiteDatabase.update(AdminContact.Question.TABLE_QUIZ, contentValues, AdminContact.Question.ID=?,newString[] {rowId});
代替:
sqLiteDatabase.update(AdminContact.Question.TABLE_QUIZ, contentValues, AdminContact.Question.ID + "=" + rowId, null);

+0

先生,我應該放什麼 「?」和newString [],因爲他們仍然是紅色的錯誤Sir。 –

+0

'return sqLiteDatabase.update(AdminContact.Question.TABLE_QUIZ,contentValues,AdminContact.Question.ID +「=」+ rowId);'我認爲它會更新長數據類型值。 – GIRIDHARAN