2016-01-07 4 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

У меня была такая же проблема при обновлении значений таблицы db. Тогда я попытался под кодом. Он отлично работает для меня Попробуйте этот код.

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(); 
    } 
} 

класс Update

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

Сэр Ияс Ахмед, Пожалуйста, помогите мне. Есть ли какая-либо ссылка, которую вы знаете о том, как просматривать данные из Sqlite в Button или Textview.? Я не могу начать свой проект qiuz о том, как играть с рандомизированными вопросами. Пожалуйста, мне нужна ваша помощь. –

0

Я не имею понятия о давно, но я использовал этот код для обновления значения типа String, Попробуйте этот код в 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 [], потому что они остаются красными как ошибка сэра. –

+0

'return sqLiteDatabase.update (AdminContact.Question.TABLE_QUIZ, contentValues, AdminContact.Question.ID +" = "+ rowId);' Я думаю, что он будет обновлять длинное значение типа данных. – GIRIDHARAN

Смежные вопросы