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

SQLite база данных (новичек) - Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.67
Jeka_Forever
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 11
20.01.2013, 22:26     SQLite база данных (новичек) #1
Здравствуйте уважаемые программисты.
Подскажите пожалуйста как можно при создании таблицы в базе данных вытаскивать название с TextEdit?

А также помогите разобраться.
На экране имеется 3 TextEdit и Button. (Скрин во вложениях).
После заполнения всех TextEdit нажимаем Button и выдает ошибку. (Скрин во вложениях).
После нажатия на кнопку должна создастся база данных с именем JournalDB.
Создастся таблица с именем (TextEdit1+TextEdit3), и полем Student.
Потом через if добавляю в эту таблицу колонку Lessons1...LessonsN (N - ровно TextEdit2).
И еще две колонки Exems и Total.
После создания таблицы перехожу на экран Create2.
Что делаю не так?

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
40
41
42
43
44
45
46
47
48
49
import android.app.Activity;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
 
public class Create1 extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.create1);
 
        Button but1 = (Button) findViewById(R.id.button1);
        but1.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub  
                EditText title = (EditText) findViewById(R.id.editText1+R.id.editText1);
                String lessons = (String) getText(R.id.editText2);
                int n = Integer.parseInt(lessons);
                int m=0;
                
            
                SQLiteDatabase db = openOrCreateDatabase("JournalDB", MODE_PRIVATE, 0);
                db.execSQL("CREATE TABLE IF NOT EXISTS "+title+" (Student VARCHAR);");
                if (m<n){
                    db.execSQL("ALTER TABLE "+title+" ADD Lessons"+m+" int;");
                    m++;
                }
                db.execSQL("ALTER TABLE "+title+" ADD Exam int;");
                db.execSQL("ALTER TABLE "+title+" ADD Total int;");
                
                Intent intent1 = new Intent(Create1.this, Create2.class);
            startActivity(intent1);
            }
 
            private SQLiteDatabase openOrCreateDatabase(String string,
                    int modePrivate, int i) {
                return null;
            }
        });
    }
 
}
Миниатюры
SQLite база данных (новичек)   SQLite база данных (новичек)  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
20.01.2013, 22:35     SQLite база данных (новичек) #2
смотрите логи.

Добавлено через 2 минуты
Цитата Сообщение от Jeka_Forever Посмотреть сообщение
getText(R.id.editText2);
что за?
с чего вы взяли что эта функция вытягивает текст с EditText?
Jeka_Forever
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 11
20.01.2013, 22:50  [ТС]     SQLite база данных (новичек) #3
Цитата Сообщение от V0v1k Посмотреть сообщение
что за?
с чего вы взяли что эта функция вытягивает текст с EditText?
Не знаю((
А как вытянуть текст с EditText2(String) что бы потом преобразовать его в int?
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
20.01.2013, 22:54     SQLite база данных (новичек) #4
Цитата Сообщение от Jeka_Forever Посмотреть сообщение
findViewById(R.id.editText1+R.id.editText1);
а это вообще шедевр. R.id.editText1+R.id.editText1 - к чему это?

Добавлено через 57 секунд
Цитата Сообщение от Jeka_Forever Посмотреть сообщение
А как вытянуть текст с EditText2
editText2.getText()
Jeka_Forever
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 11
21.01.2013, 00:16  [ТС]     SQLite база данных (новичек) #5
Цитата Сообщение от V0v1k Посмотреть сообщение
а это вообще шедевр. R.id.editText1+R.id.editText1 - к чему это?

Добавлено через 57 секунд

editText2.getText()
Спасибо за замечания.

Java
1
2
3
4
5
6
7
EditText title1 = (EditText) findViewById(R.id.editText1);
    EditText title2 = (EditText) findViewById(R.id.editText3);
    String title = title1.getTag().toString()+title2.getText().toString();
    EditText num = (EditText) findViewById(R.id.editText2);
    String lessons = num.getText().toString();
    int n = Integer.parseInt(lessons);
    int m=0;
Так будет правильнее? Или и это не правильно сделано?

Добавлено через 11 минут
Цитата Сообщение от V0v1k Посмотреть сообщение
смотрите логи.
Я не сильно в них разбираюсь(
Но при запуске приложения все норм, а вот после нажатия на кнопку в LogCat появляются следующие сообщения:

Кликните здесь для просмотра всего текста
01-20 12:23:35.468: D/gralloc_goldfish(17409): Emulator without GPU emulation detected.
01-20 12:23:39.897: W/KeyCharacterMap(17409): No keyboard for id 0
01-20 12:23:39.897: W/KeyCharacterMap(17409): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
01-20 12:23:52.888: D/AndroidRuntime(17409): Shutting down VM
01-20 12:23:52.888: W/dalvikvm(17409): threadid=1: thread exiting with uncaught exception (group=0xb6ff44f0)
01-20 12:23:52.898: E/AndroidRuntime(17409): FATAL EXCEPTION: main
01-20 12:23:52.898: E/AndroidRuntime(17409): java.lang.NullPointerException
01-20 12:23:52.898: E/AndroidRuntime(17409): at com.dehurko.journal.Create1$1.onClick(Create1.java:31)
01-20 12:23:52.898: E/AndroidRuntime(17409): at android.view.View.performClick(View.java:2485)
01-20 12:23:52.898: E/AndroidRuntime(17409): at android.view.View$PerformClick.run(View.java:9080)
01-20 12:23:52.898: E/AndroidRuntime(17409): at android.os.Handler.handleCallback(Handler.java:587)
01-20 12:23:52.898: E/AndroidRuntime(17409): at android.os.Handler.dispatchMessage(Handler.java:92)
01-20 12:23:52.898: E/AndroidRuntime(17409): at android.os.Looper.loop(Looper.java:130)
01-20 12:23:52.898: E/AndroidRuntime(17409): at android.app.ActivityThread.main(ActivityThread.java:3683)
01-20 12:23:52.898: E/AndroidRuntime(17409): at java.lang.reflect.Method.invokeNative(Native Method)
01-20 12:23:52.898: E/AndroidRuntime(17409): at java.lang.reflect.Method.invoke(Method.java:507)
01-20 12:23:52.898: E/AndroidRuntime(17409): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
01-20 12:23:52.898: E/AndroidRuntime(17409): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
01-20 12:23:52.898: E/AndroidRuntime(17409): at dalvik.system.NativeStart.main(Native Method)
01-20 12:23:55.118: I/Process(17409): Sending signal. PID: 17409 SIG: 9
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
21.01.2013, 00:36     SQLite база данных (новичек) #6
Цитата Сообщение от Jeka_Forever Посмотреть сообщение
Так будет правильнее?
да


Цитата Сообщение от Jeka_Forever Посмотреть сообщение
NullPointerException
Create1.java:31
NullPointerException, класс Create1 строка 31
Jeka_Forever
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 11
21.01.2013, 12:58  [ТС]     SQLite база данных (новичек) #7
Цитата Сообщение от V0v1k Посмотреть сообщение
да
NullPointerException, класс Create1 строка 31
Это исправил.
Теперь ругается вот на что:
01-20 12:46:23.378: E/AndroidRuntime(29416): java.lang.NullPointerException
01-20 12:46:23.378: E/AndroidRuntime(29416): at com.dehurko.journal.Create1$1.onClick(Create1.java:39)

38. SQLiteDatabase db = openOrCreateDatabase("db", MODE_PRIVATE, 0);
39. db.execSQL("CREATE TABLE" +title+" (Student VARCHAR);");
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
21.01.2013, 14:18     SQLite база данных (новичек) #8
подебагайте, видимо db у вас null.
Jeka_Forever
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 11
21.01.2013, 17:57  [ТС]     SQLite база данных (новичек) #9
Цитата Сообщение от V0v1k Посмотреть сообщение
подебагайте, видимо db у вас null.
Спасибо за помощь.
Ошибка заключалась в том что как-то создался:
Java
1
2
3
4
private SQLiteDatabase openOrCreateDatabase(String string,
                    int modePrivate, int i) {
                return null;
            }
что и мешало создать базу, после удаления все заработало.
Klafe
1 / 1 / 0
Регистрация: 13.10.2012
Сообщений: 101
23.01.2013, 12:42     SQLite база данных (новичек) #10
Всем привет!
Что бы не плодить темы решил здесь спросить!

Скажите пожалуйста, как метод может возвращать нам объект класса Cursor"?

Вот здесь:

Cursor c = db.query("mytable", null, null, null, null, null, null);

Cursor же - это интерфейс. А интерфейс — это ведь что-то вроде абстрактного класса, который никогда не может быть использован для создания объектов.

Что-то я здесь немножко не понял.

Мы можем создать переменную типа Cursor, но она должна ссылаться на конкретный класс или его объект, который реализует этот интерфейс.

В инструкции написано что query возвращает cursor? Как может интерфейс вернуться?????

Или что-то я не так понял?

Спасибо!
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
23.01.2013, 17:21     SQLite база данных (новичек) #11
Цитата Сообщение от Klafe Посмотреть сообщение
В инструкции написано что query возвращает cursor? Как может интерфейс вернуться?????
возвращает объект поддерживающий интерфейс Cursor. так понятней?
Klafe
1 / 1 / 0
Регистрация: 13.10.2012
Сообщений: 101
24.01.2013, 00:42     SQLite база данных (новичек) #12
Цитата Сообщение от V0v1k Посмотреть сообщение
возвращает объект поддерживающий интерфейс Cursor. так понятней?
Так понятно!

А не могли бы сказать что за объект? Не SQLiteCursor случаем?

Спасибо!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2013, 00:47     SQLite база данных (новичек)
Еще ссылки по теме:

SQLite вывод данных Android
Не создается база данных SQLite Android
Android Запись данных в 2 таблицы SQLite
Android AutoCompleteTextView + база sqlite
База SQLite: метод по созданию таблицы не вызывается Android

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

Или воспользуйтесь поиском по форуму:
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
24.01.2013, 00:47     SQLite база данных (новичек) #13
не знаю. раз скрыли конкретный класс, значит его знать не нужно и может быть разный.
Yandex
Объявления
24.01.2013, 00:47     SQLite база данных (новичек)
Ответ Создать тему
Опции темы

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