Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.67
Jeka_Forever
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 11
#1

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

20.01.2013, 22:26. Просмотров 1945. Ответов 12
Метки нет (Все метки)

Здравствуйте уважаемые программисты.
Подскажите пожалуйста как можно при создании таблицы в базе данных вытаскивать название с 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;
            }
        });
    }
 
}
0
Миниатюры
SQLite база данных (новичек)   SQLite база данных (новичек)  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2013, 22:26
Я подобрал для вас темы с готовыми решениями и ответами на вопрос SQLite база данных (новичек) (Программирование Android):

База данных SQLite
Добрый день. Может я повторюсь с вопросом, но вы уж меня простите, не могу...

База данных sqlite
Доброго времени суток. Пишу приложение в котором возможна отправка ...

Не создается база данных SQLite
Здравствуйте уважаемы форумчане! Столкнулся с проблем, не создается база...

SQLite база данных с паролем
Есть база данных защищенная ключом! Сама база данных хранится на устройстве....

Android, ListView, база данных SQLite
Как достать картинку из БД (SQLite) и поместить её в ListView??? помогите,...

AutoCompleteTextView + база sqlite
Вопрос вот в чем, имеется база и элемент AutoCompleteTextView. Задача в том,...

12
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
20.01.2013, 22:35 #2
смотрите логи.

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

Добавлено через 57 секунд
Цитата Сообщение от Jeka_Forever Посмотреть сообщение
А как вытянуть текст с EditText2
editText2.getText()
1
Jeka_Forever
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 11
21.01.2013, 00:16  [ТС] #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
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
21.01.2013, 00:36 #6
Цитата Сообщение от Jeka_Forever Посмотреть сообщение
Так будет правильнее?
да


Цитата Сообщение от Jeka_Forever Посмотреть сообщение
NullPointerException
Create1.java:31
NullPointerException, класс Create1 строка 31
1
Jeka_Forever
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 11
21.01.2013, 12:58  [ТС] #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);");
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
21.01.2013, 14:18 #8
подебагайте, видимо db у вас null.
1
Jeka_Forever
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 11
21.01.2013, 17:57  [ТС] #9
Цитата Сообщение от V0v1k Посмотреть сообщение
подебагайте, видимо db у вас null.
Спасибо за помощь.
Ошибка заключалась в том что как-то создался:
Java
1
2
3
4
private SQLiteDatabase openOrCreateDatabase(String string,
                    int modePrivate, int i) {
                return null;
            }
что и мешало создать базу, после удаления все заработало.
0
Klafe
1 / 1 / 1
Регистрация: 13.10.2012
Сообщений: 101
23.01.2013, 12:42 #10
Всем привет!
Что бы не плодить темы решил здесь спросить!

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

Вот здесь:

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

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

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

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

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

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

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

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

Спасибо!
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
24.01.2013, 00:47 #13
не знаю. раз скрыли конкретный класс, значит его знать не нужно и может быть разный.
1
24.01.2013, 00:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2013, 00:47
Привет! Вот еще темы с решениями:

База SqLite - проверка записей на существование
Помоги разрешить следующую ситуацию. у меня есть метод который получает...

База SQLite: метод по созданию таблицы не вызывается
Не пойму что не так. Раньше с ним не работал Пытался реализовать пример из...

Постолбцовое отображение данных из базы данных SQLite
Уважаемые форумчане, помогите пожалуйста. Необходимо вывести данные из таблицы...

Вывод данных из базы данных SQLite
Здравствуйте уважаемые форумчане! Делаю программу для работы с базой данных...


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

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

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