6 / 6 / 1
Регистрация: 29.11.2013
Сообщений: 492
1

SQLite

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

Author24 — интернет-сервис помощи студентам
Возвращаясь к старой теме, вернусь к проблеме.
По рекомендации попробовал сделать от сюда
Тут отправляем данные для записи в бд
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(AsyncHttpResponseH andler.java:351)
at com.loopj.android.http.AsyncHttpResponseHandler$ResponderHandler.handleMessage(A syncHttpResponseHandler.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(AsyncHttpRespons eHandler.java:304)
at com.loopj.android.http.AsyncHttpResponseHandler.handleMessage(AsyncHttpResponseH andler.java:395)
at com.loopj.android.http.AsyncHttpResponseHandler$ResponderHandler.handleMessage(A syncHttpResponseHandler.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(AsyncHttpResponseH andler.java:351)
at com.loopj.android.http.AsyncHttpResponseHandler$ResponderHandler.handleMessage(A syncHttpResponseHandler.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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.02.2016, 16:38
Ответы с готовыми решениями:

Как написать формулы в sqlite или отказаться от использования sqlite вовсе
Доброго времени суток. Друзья, пишу справочник по физике, недавно столкнулся с проблемой - как...

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

SQLite
Создаю простенькую таблицу. db.execSQL("create table " + DATABASE_TABLE_NAME + " (" + ID_COLUMN +...

SQLite
почему id = 0 ??? public void onClick(View view) { dataBase = new DataBase(context); ...

18
91 / 86 / 12
Регистрация: 08.08.2013
Сообщений: 667
17.02.2016, 16:45 2
qdhtnsoyndtr, пальцем в небо.
Расширение не пробовали базе .db поставить.
Врятли это решит, но вдруг.
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
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
6 / 6 / 1
Регистрация: 29.11.2013
Сообщений: 492
17.02.2016, 17:24  [ТС] 4
Spelcrawler, ниже в insert
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
17.02.2016, 17:26 5
qdhtnsoyndtr, я имел ввиду метод public void Insertdb(String text, String title). Он где вызывается?
0
6 / 6 / 1
Регистрация: 29.11.2013
Сообщений: 492
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
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
17.02.2016, 17:35 7
qdhtnsoyndtr, А что такое db? В строке
Java
1
db.Insertdb(text, title);
0
6 / 6 / 1
Регистрация: 29.11.2013
Сообщений: 492
17.02.2016, 17:39  [ТС] 8
Spelcrawler, ну я указал в начале сам класс и все что с ним связано в 3-м файле. больше там ничего нет с бд. Я так предполагал что он
Java
1
SQLiteDatabase database = dbHelper.getWritableDatabase();
тут и вызывается
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
17.02.2016, 17:41 9
db.Insertdb(text, title);

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

ужас
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
17.02.2016, 17:41 10
qdhtnsoyndtr, дак все же что за db? Откуда оно там взялось? Это каким-то образом полученный экземпляр активити Testdb?
0
6 / 6 / 1
Регистрация: 29.11.2013
Сообщений: 492
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
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
17.02.2016, 17:42 12
Цитата Сообщение от Паблито Посмотреть сообщение
db это активити
Я вот тоже так подумал, но откуда оно в другой активити не понятно.
0
6 / 6 / 1
Регистрация: 29.11.2013
Сообщений: 492
17.02.2016, 17:44  [ТС] 13
db это указваю класс Testdb в котором и отрабатывает public void Insertdb(String text, String title)
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
17.02.2016, 17:44 14
Цитата Сообщение от qdhtnsoyndtr Посмотреть сообщение
Testdb db = new Testdb();
Ну ок, а метод onCreate() то не отработал - и там dbHelper = null, как я и сказал в первом сообщении. Вообще так делать нельзя особенно руками создавать экземпляры активити.
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
17.02.2016, 17:44 15
Цитата Сообщение от qdhtnsoyndtr Посмотреть сообщение
Testdb db = new Testdb();
зачем этот метод insert вообще там находится?
0
6 / 6 / 1
Регистрация: 29.11.2013
Сообщений: 492
17.02.2016, 17:46  [ТС] 16
Паблито, Для удобства, пока разделил
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
17.02.2016, 17:46 17
Цитата Сообщение от Паблито Посмотреть сообщение
зачем этот метод insert вообще там находится?
Видимо были проблемы с контекстом и такой способ показался подходящим)
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
17.02.2016, 17:50 18
надо начать с того, что вытереть строку с созданием активити вручную, а потом думать где подходящее место для этого метода
0
6 / 6 / 1
Регистрация: 29.11.2013
Сообщений: 492
17.02.2016, 17:51  [ТС] 19
Все проблема решена.
Перемести метод insert в класс jsontet
0
17.02.2016, 17:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.02.2016, 17:51
Помогаю со студенческими работами здесь

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

SQLite Android
Привет всем! У меня образовалась такая проблема: пишу приложение на android, при этом...

JSON в SQLite
Подскажите, как правильно передать данные для записи в базу. В этом методе собственно сам json ...

Sqlite trigger
Гуру SQLite, обьясните... 1) насколько SQLite И андроди поддерживает тригеры? насколько это...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru