Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
qdhtnsoyndtr
5 / 5 / 1
Регистрация: 29.11.2013
Сообщений: 466
#1

SQLite - Программирование Android

17.02.2016, 16:38. Просмотров 321. Ответов 18
Метки нет (Все метки)

Возвращаясь к старой теме, вернусь к проблеме.
По рекомендации попробовал сделать от сюда
Тут отправляем данные для записи в бд
Java
1
2
3
4
obj = jsonArray.getJSONObject(i);
                            String text = obj.getString("text");
                            String title = obj.getString("title");
                            db.Insertdb(text, title);
Далее
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class DBHelper extends SQLiteOpenHelper{
 
    public static final int DATABASE_VERSION = 1;
    public static final String DATABASE_NAME = "newsDb";
    public static final String TABLE_CONTACTS = "news";
 
    public static final String KEY_ID = "_id";
    public static final String KEY_TITLE = "title";
    public static final String KEY_TEXT = "text";
 
    public DBHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
 
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table " + TABLE_CONTACTS + "(" + KEY_ID
                + " integer primary key," + KEY_TITLE + " text," + KEY_TEXT + " text" + ")");
 
    }
 
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("drop table if exists " + TABLE_CONTACTS);
        onCreate(db);
    }
}
Тут принимаем данные и пытаемся записать
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class Testdb extends AppCompatActivity {
 
    DBHelper dbHelper;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        dbHelper = new DBHelper(this);
    }
 
    public void Insertdb(String text, String title)
    {
        SQLiteDatabase database = dbHelper.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put(DBHelper.KEY_TEXT, text);
        contentValues.put(DBHelper.KEY_TITLE, title);
        database.insert(DBHelper.TABLE_CONTACTS, null, contentValues);
        dbHelper.close();
    }
 
 
}
И постоянно ругается на SQLiteDatabase database = dbHelper.getWritableDatabase();
И сами ошибки
E/AsyncHttpRH: User-space exception detected!
java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase com.diplom.myapplication.DBHelper.getWritableDatabase()' on a null object reference
at com.diplom.myapplication.Testdb.Insertdb(Testdb.java:22)
at com.diplom.myapplication.jsontet$1.onSuccess(jsontet.java:70)
at com.loopj.android.http.AsyncHttpResponseHandler.handleMessage(AsyncHttpResponseHandler.java:351)
at com.loopj.android.http.AsyncHttpResponseHandler$ResponderHandler.handleMessage(AsyncHttpResponseHandler.java:510)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5223)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

И вторая
FATAL EXCEPTION: main
Process: com.diplom.myapplication, PID: 12675
java.lang.RuntimeException: java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase com.diplom.myapplication.DBHelper.getWritableDatabase()' on a null object reference
at com.loopj.android.http.AsyncHttpResponseHandler.onUserException(AsyncHttpResponseHandler.java:304)
at com.loopj.android.http.AsyncHttpResponseHandler.handleMessage(AsyncHttpResponseHandler.java:395)
at com.loopj.android.http.AsyncHttpResponseHandler$ResponderHandler.handleMessage(AsyncHttpResponseHandler.java:510)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5223)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase com.diplom.myapplication.DBHelper.getWritableDatabase()' on a null object reference
at com.diplom.myapplication.Testdb.Insertdb(Testdb.java:22)
at com.diplom.myapplication.jsontet$1.onSuccess(jsontet.java:70)
at com.loopj.android.http.AsyncHttpResponseHandler.handleMessage(AsyncHttpResponseHandler.java:351)
at com.loopj.android.http.AsyncHttpResponseHandler$ResponderHandler.handleMessage(AsyncHttpResponseHandler.java:510)*
at android.os.Handler.dispatchMessage(Handler.java:102)*
at android.os.Looper.loop(Looper.java:135)*
at android.app.ActivityThread.main(ActivityThread.java:5223)*
at java.lang.reflect.Method.invoke(Native Method)*
at java.lang.reflect.Method.invoke(Method.java:372)

Добавлено через 7 минут
Не понимаю в чем проблема, подскажите пожалуйста, уже замучился с этой бд
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2016, 16:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос SQLite (Программирование Android):

SQLite - Программирование Android
Мне не подскажите где можно взять хорошие примеры по SQlite.

SQLite - Программирование Android
Создаю простенькую таблицу. db.execSQL("create table " + DATABASE_TABLE_NAME + " (" + ID_COLUMN + " integer primary key...

SQLite - Программирование Android
почему id = 0 ??? public void onClick(View view) { dataBase = new DataBase(context); sqLiteDatabase =...

SQLite - Программирование Android
Приложение вылетает с ошибкой, не подскажете, в чём проблема? public class DatabaseHelper extends SQLiteOpenHelper { private...

SQLite запрос - Программирование Android
Здраствуйте, у мене есть таблица events... там есть поле action_date, в етом поле дата и время в секундах, я не знаю как мне написать...

Sqlite trigger - Программирование Android
Гуру SQLite, обьясните... 1) насколько SQLite И андроди поддерживает тригеры? насколько это "универсальная" штука? Если та-же база...

18
_Night_Scream_
75 / 74 / 8
Регистрация: 08.08.2013
Сообщений: 607
17.02.2016, 16:45 #2
qdhtnsoyndtr, пальцем в небо.
Расширение не пробовали базе .db поставить.
Врятли это решит, но вдруг.
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
17.02.2016, 17:15 #3
Цитата Сообщение от qdhtnsoyndtr Посмотреть сообщение
java.lang.RuntimeException: java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase
Видимо в строке
Java
1
SQLiteDatabase database = dbHelper.getWritableDatabase();
dbHelper = null. Где вообще этот метод вызывается?
0
qdhtnsoyndtr
5 / 5 / 1
Регистрация: 29.11.2013
Сообщений: 466
17.02.2016, 17:24  [ТС] #4
Spelcrawler, ниже в insert
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
17.02.2016, 17:26 #5
qdhtnsoyndtr, я имел ввиду метод public void Insertdb(String text, String title). Он где вызывается?
0
qdhtnsoyndtr
5 / 5 / 1
Регистрация: 29.11.2013
Сообщений: 466
17.02.2016, 17:31  [ТС] #6
Spelcrawler, Он в классе
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public class jsontet extends Activity {
public void invoke() {
        AsyncHttpClient client = new AsyncHttpClient();
        client.get("http://***.ddns.net:8080/get", new AsyncHttpResponseHandler() {
            @Override
            public void onSuccess(int statusCode, Header[] headers, byte[] response) {
                try {
                    jsonArray = new JSONArray(new String(response));
                    JSONObject obj;
 
                    for (int i = 0; i < jsonArray.length(); i++)
                    {
 
                        try {
                            obj = jsonArray.getJSONObject(i);
                            String text = obj.getString("text");
                            String title = obj.getString("title");
                            db.Insertdb(text, title);
 
                            textView.setText(obj.getString("title"));
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
 
                    }
 
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
 
            @Override
            public void onFailure(int statusCode, Header[] headers, byte[] errorResponse, Throwable e) {
                // called when response HTTP status is "4XX" (eg. 401, 403, 404)
            }
 
        });
 
    }
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
17.02.2016, 17:35 #7
qdhtnsoyndtr, А что такое db? В строке
Java
1
db.Insertdb(text, title);
0
qdhtnsoyndtr
5 / 5 / 1
Регистрация: 29.11.2013
Сообщений: 466
17.02.2016, 17:39  [ТС] #8
Spelcrawler, ну я указал в начале сам класс и все что с ним связано в 3-м файле. больше там ничего нет с бд. Я так предполагал что он
Java
1
SQLiteDatabase database = dbHelper.getWritableDatabase();
тут и вызывается
0
Pablito
2503 / 1987 / 619
Регистрация: 12.05.2014
Сообщений: 6,930
Завершенные тесты: 1
17.02.2016, 17:41 #9
db.Insertdb(text, title);

db это активити, оно вообще создано что ты на нем вызываешь методы?
там чтобы инициализовалось поле dbHelper должен отработать onCreate()

ужас
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
17.02.2016, 17:41 #10
qdhtnsoyndtr, дак все же что за db? Откуда оно там взялось? Это каким-то образом полученный экземпляр активити Testdb?
0
qdhtnsoyndtr
5 / 5 / 1
Регистрация: 29.11.2013
Сообщений: 466
17.02.2016, 17:42  [ТС] #11
Паблито,
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class jsontet extends Activity {
 
    private TextView textView;
    private TextView textView2;
    private TextView textView3;
    JSONArray jsonArray;
 
    Testdb db = new Testdb();
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.content_main);
        textView = (TextView) findViewById(R.id.textView);
        textView2 = (TextView) findViewById(R.id.textView2);
        textView3 = (TextView) findViewById(R.id.textView3);
        invoke();
    }
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
17.02.2016, 17:42 #12
Цитата Сообщение от Паблито Посмотреть сообщение
db это активити
Я вот тоже так подумал, но откуда оно в другой активити не понятно.
0
qdhtnsoyndtr
5 / 5 / 1
Регистрация: 29.11.2013
Сообщений: 466
17.02.2016, 17:44  [ТС] #13
db это указваю класс Testdb в котором и отрабатывает public void Insertdb(String text, String title)
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
17.02.2016, 17:44 #14
Цитата Сообщение от qdhtnsoyndtr Посмотреть сообщение
Testdb db = new Testdb();
Ну ок, а метод onCreate() то не отработал - и там dbHelper = null, как я и сказал в первом сообщении. Вообще так делать нельзя особенно руками создавать экземпляры активити.
0
Pablito
2503 / 1987 / 619
Регистрация: 12.05.2014
Сообщений: 6,930
Завершенные тесты: 1
17.02.2016, 17:44 #15
Цитата Сообщение от qdhtnsoyndtr Посмотреть сообщение
Testdb db = new Testdb();
зачем этот метод insert вообще там находится?
0
17.02.2016, 17:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2016, 17:44
Привет! Вот еще темы с ответами:

ListView и SQLite - Программирование Android
Пишу первую простенькую игру.Пожалуйста подскажите как решить такую задачу: 1.Есть listview, в котором через simpleCursorAdapter...

Не создается DB SQLite - Программирование Android
Люди добрые, подскажите что не так в коде package com.gufa.myalarm2.alarmclock; import android.content.ContentProvider; import...

SQLite и умножения - Программирование Android
как видите на картинке есть несколько EditText. SQLite создает-заполняет таблицу из шести EditText. как реализовать чтобы при нажатии Далее...

SQLite запрос - Программирование Android
Добрый день! Не могу разобраться как писать запросы SQL. Предположим, у меня есть таблица Events в базе SQLite (см. вложенную...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru