Не удалось обновить выбранный столбец в базе данных SQLite - Android

Мне нужно обновить выбранные столбцы в моей базе данных, однако я не могу получить обновленные данные. Как только пользователь нажимает на следующую кнопку, данные должны обновляться. Всего в таблице должно быть обновлено 12 полей.

Примечание: dba является DBAdapter i.e базы данных, а myDB - SQLiteDatabase

 nxt = (Button)findViewById(R.id.btn_nxt);
          nxt.setOnClickListener(new OnClickListener(){

            public void onClick(View v) {


                String b1=t1.getText().toString();
                String b2=goal_website_trying_to_achieve_edttxt.getText().toString();
                String b3=communicate_edttxt.getText().toString();
                String b4=success_look_like_edttxt.getText().toString();
                String b5=usp_insights_edttxt.getText().toString();
                String b6=act_edttxt.getText().toString();
                String b7=market_edttxt.getText().toString();
                String b8=your_current_website_www_edttxt.getText().toString();
                String b9=your_current_website_good_edttxt.getText().toString();
                String b10=your_current_website_bad_edttxt.getText().toString();
                String b11=your_current_website_type_edttxt.getText().toString();
                String b12=your_current_website_update_edttxt.getText().toString();
                String b13=your_current_website_supporting_edttxt.getText().toString();






                if(!validatescreen2()){
                    return;
                }

                else{

                    dba.open();



                    String updatequery = "UPDATE "+ DBAdapter.DATABASE_TABLE+ " SET ";

                    updatequery = updatequery + " KEY_MESSAGE_1 = " + b1 +"WHERE" +"_id"+mRowId +",";
                    updatequery = updatequery + " KEY_MESSAGE_2 = " + b2 +"WHERE" +"_id"+mRowId + ",";
                    updatequery = updatequery + " KEY_MESSAGE_3 = " + b3 +"WHERE" +"_id"+mRowId + ",";
                    updatequery = updatequery + " KEY_MESSAGE_4 = " + b4 +"WHERE" +"_id"+mRowId + ",";
                    updatequery = updatequery + " KEY_MESSAGE_5 = " + b5 +"WHERE" +"_id"+mRowId + ",";
                    updatequery = updatequery + " KEY_MESSAGE_6 = " + b6 + "WHERE" +"_id"+mRowId +"',";
                    updatequery = updatequery + " KEY_YOUR_CURRENT_WEBSITE_1 = " + b7 + "WHERE" +"_id"+mRowId +",";
                    updatequery = updatequery + " KEY_YOUR_CURRENT_WEBSITE_2 = " + b8 +"WHERE" +"_id"+mRowId + ",";
                    updatequery = updatequery + " KEY_YOUR_CURRENT_WEBSITE_3 = " + b9 +"WHERE" +"_id"+mRowId + ",";
                    updatequery = updatequery + " KEY_YOUR_CURRENT_WEBSITE_TYPE = " + b10 + "WHERE" +"_id"+mRowId +",";
                    updatequery = updatequery + " KEY_YOUR_CURRENT_WEBSITE_NEED = " + b11 + "WHERE" +"_id"+mRowId +",";
                    updatequery = updatequery + " KEY_YOUR_CURRENT_WEBSITE_OTHER = " + b12 + "WHERE" +"_id"+mRowId ;

                    try{
                        myDB.execSQL(updatequery);
                    }catch(Exception e){
                        Log("Caught while writing response" + e.getLocalizedMessage());
                    }finally{
                        if(myDB != null)myDB.close();

                    }

                    showDialog(DIALOG_ID);

                    dba.close();
                }


            }

          });

внесенные изменения

String updatequery = "UPDATE"+ DBAdapter.DATABASE_TABLE+ " SET "+ DBAdapter.KEY_MESSAGE_1 +"= "+ b1 +

                                DBAdapter.KEY_MESSAGE_2  +"= "+ b2 +
                                DBAdapter.KEY_MESSAGE_3  +"= "+ b3 +
                                DBAdapter.KEY_MESSAGE_4  +"= "+ b4 +
                                DBAdapter.KEY_MESSAGE_5  +"= "+ b5 +
                                DBAdapter.KEY_MESSAGE_6 +"= "+ b6+
                                DBAdapter.KEY_YOUR_CURRENT_WEBSITE_1  +"= "+ b7 +
                                DBAdapter.KEY_YOUR_CURRENT_WEBSITE_2  +"= "+ b8 +
                                DBAdapter.KEY_YOUR_CURRENT_WEBSITE_3  +"= "+ b9+
                                DBAdapter.KEY_YOUR_CURRENT_WEBSITE_TYPE  +"= "+ b10 +
                                DBAdapter.KEY_YOUR_CURRENT_WEBSITE_NEED  +"= "+ b11 +               
                                DBAdapter.KEY_YOUR_CURRENT_WEBSITE_OTHER +"= " + b12  + "WHERE" + DBAdapter.KEY_ROWID + "=" + mRowId ;



logcat error file


01-30 12:02:24.136: W/System.err(2645): java.lang.NullPointerException
01-30 12:02:24.136: W/System.err(2645):     at com.example.sales.Newform_Screen2$3.onClick(Newform_Screen2.java:165)
01-30 12:02:24.136: W/System.err(2645):     at android.view.View.performClick(View.java:4084)
01-30 12:02:24.136: W/System.err(2645):     at android.view.View$PerformClick.run(View.java:16966)
01-30 12:02:24.136: W/System.err(2645):     at android.os.Handler.handleCallback(Handler.java:615)
01-30 12:02:24.136: W/System.err(2645):     at android.os.Handler.dispatchMessage(Handler.java:92)
01-30 12:02:24.136: W/System.err(2645):     at android.os.Looper.loop(Looper.java:137)
01-30 12:02:24.136: W/System.err(2645):     at android.app.ActivityThread.main(ActivityThread.java:4745)
01-30 12:02:24.136: W/System.err(2645):     at java.lang.reflect.Method.invokeNative(Native Method)
1
nl ja de
Выполняется ли ваш запрос?
добавлено автор Subburaj, источник
@Subburaj: не обновляется
добавлено автор Shweta, источник

1 ответы

Ваш SQL-запрос неверен. Он должен быть в форме -

UPDATE <table>
   SET  = ,
        =  ...
 WHERE  = 

Also, you'll need to escape the values, so it's SET FieldName = 'value'

You'd be better off taking advantage of the update method.

As follows:

String updatequery = "UPDATE"+ DBAdapter.DATABASE_TABLE+ " SET "+ DBAdapter.KEY_MESSAGE_1 +"= '"+ b1 + "'," +

                                DBAdapter.KEY_MESSAGE_2  +"= '"+ b2 + "'," +
                                DBAdapter.KEY_MESSAGE_3  +"= '"+ b3 + "'," +
                                DBAdapter.KEY_MESSAGE_4  +"= '"+ b4 + "'," +
                                DBAdapter.KEY_MESSAGE_5  +"= '"+ b5 + "'," +
                                DBAdapter.KEY_MESSAGE_6 +"= '"+ b6 + "'," +
                                DBAdapter.KEY_YOUR_CURRENT_WEBSITE_1  +"= '"+ b7 + "'," +
                                DBAdapter.KEY_YOUR_CURRENT_WEBSITE_2  +"= '"+ b8 + "'," +
                                DBAdapter.KEY_YOUR_CURRENT_WEBSITE_3  +"= '"+ b9 + "'," +
                                DBAdapter.KEY_YOUR_CURRENT_WEBSITE_TYPE  +"= '"+ b10 + "'," +
                                DBAdapter.KEY_YOUR_CURRENT_WEBSITE_NEED  +"= '"+ b11 + "'," +        
                                DBAdapter.KEY_YOUR_CURRENT_WEBSITE_OTHER +"= '" + b12  + "' " + "WHERE" + DBAdapter.KEY_ROWID + "=" + mRowId ;

It's still a horrible way to access the database. What you really should do is this --

ContentValues values = new ContentValues();
values.put( DBAdapter.KEY_MESSAGE_1, b1 );
values.put( DBAdapter.KEY_MESSAGE_2, b2 );
....
String filter = String.format( "%s = '%s'", DBAdapter.KEY_ROWID, mRowId );
myDB.update( DBAdapter.DATABASE_TABLE, values, filter, null );
4
добавлено
Вам все еще не хватает одиночных кавычек вокруг значений и запятых между назначениями. Кроме того, у вас даже нет пробела между значением и следующим именем поля. Обновление ответа.
добавлено автор 323go, источник
Измените формат String.format на "% s = '% s'" - Я предположил, что mRowId будет числовым, а не строковым. Могу ли я порекомендовать вам потратить немного времени на ознакомление с отличной документацией для Android SDK? Все вышеприведенные концепции хорошо объясняются.
добавлено автор 323go, источник
в соответствии с изменениями, предложенными вами. Получив эту ошибку, пожалуйста, обратитесь к приведенному выше логарифму
добавлено автор Shweta, источник
в соответствии с вашим предложением я внес изменения, но все еще получаю исключение nullpointer
добавлено автор Shweta, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

Android Developers
Android Developers
4 476 участник(ов)

Общаемся на темы, посвященным Android-разработке, SDK, Kotlin, Realm и т.д.

Android Architecture
Android Architecture
2 186 участник(ов)

Русскоязычный чат по архитектуре в андроид приложениях. Подробнее: http://telegra.ph/Android-Architecture-12-24

rus-speaking/android
rus-speaking/android
1 705 участник(ов)

Основной чат по Android разработке (вопрос-ответ). ПРАВИЛА: bit.ly/andr-rules. NEWS: bit.ly/AnrdResId ЧАТЫ: Основной: bit.ly/andr-main IDE, сборка, Git, сервисы: bit.ly/andr-tools Оффтоп: bit.ly/andr-offtop Конференции, события: bit.ly/andr-events Вакансии, найм: bit.ly/andr-job Архитектура: bit.ly/andr-patterns Rx: bit.ly/andr-rx Тестирование: bit.ly/andr-test Kotlin: bit.ly/andr-kotlin Хаmarin: bit.ly/andr-xamarin За мат, спам, агрессию, предложения о работе, оффтоп в этом канале - бан на сутки и более ☢☢☢

Android Dev Подкаст
Android Dev Подкаст
1 325 участник(ов)

Комната для обсуждения Android Dev подкаста apptractor.ru/AndroidDev/ Общее обсуждение Android: https://t.me/android_ru Остальные чаты про Android: http://t.me/devChats Наши новости https://t.me/androiddevpodcast_news

Android Guards
Android Guards
602 участник(ов)

Обсуждение любых вопросов касающихся безопасности Android. - Защита системы и приложений - Уязвимости и эксплойты - Вредоносное ПО - Копание в кишках системы и приложений (RE)

Android JOB
Android JOB
466 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению Android (full-time, part-time, remote и разовые подработки)

AndroidDev :: Разработка. It's Android time now!
AndroidDev :: Разработка. It's Android time now!
458 участник(ов)

It's Android time now! Чат разработчиков Android. Вакансии, резюме и информацию о митапах размещать можно. Публикацию скрытой и явной рекламы ваших каналов и сайтов после получения разрешения от @olegushakov

Aandroid Talks!
Aandroid Talks!
212 участник(ов)

Чат об общих вопросах по ОС Android. Чат для разработки под андроид - pro.android: https://t.me/joinchat/AAAAAEKIFKnmRT9cMebb9w

Android Rus
Android Rus
68 участник(ов)