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

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

Войти
Регистрация
Восстановить пароль
 
Kollinar
1 / 1 / 0
Регистрация: 19.02.2013
Сообщений: 78
#1

Не работает БД - Android

08.06.2015, 18:58. Просмотров 204. Ответов 6
Метки нет (Все метки)

У меня 2 экрана на обоих запись в БД в разные таблицы, но когда пытаюсь взять данные, то та таблица в которую я вводил данные последней не работает.

1.
Кликните здесь для просмотра всего текста

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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
package com.example.stracking;
 
import java.util.ArrayList;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
 
public class PredmetP extends Activity implements OnClickListener {
 
    Button btnAdd, btnRead;
    EditText etName, etEmail;
    String[] mName  = new String[0];
    DBHelper dbHelper;
    Cursor c = null;
    
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.predmet);
 
        btnAdd = (Button) findViewById(R.id.btnAdd);
        btnAdd.setOnClickListener(this);
 
        btnRead = (Button) findViewById(R.id.btnRead);
        btnRead.setOnClickListener(this);
        
        etName = (EditText) findViewById(R.id.etName);
        etEmail = (EditText) findViewById(R.id.etEmail);
        
        // создаем объект для создания и управления версиями БД
        dbHelper = new DBHelper(this);
    }
 
    @Override
    public void onClick(View v) {
 
        // создаем объект для данных
        ContentValues cv = new ContentValues();
 
        // получаем данные из полей ввода
        String name = etName.getText().toString();
        String email = etEmail.getText().toString();
 
        // подключаемся к БД
        SQLiteDatabase db = dbHelper.getWritableDatabase();
 
        switch (v.getId()) {
        
        case R.id.btnAdd:
 
            cv.put("name", name);
            cv.put("email", email);
            // вставляем запись и получаем ее ID
            db.insert("mypredmet", null, cv);
            etName.setText(null);
            etEmail.setText(null);
            break;
            
        case R.id.btnRead:
 
             // делаем запрос всех данных из таблицы mytable, получаем Cursor
                         c = db.query("mypredmet", null, null, null, null, null, null);
                        // ставим позицию курсора на первую строку выборки
                        // если в выборке нет строк, вернется false
                    ArrayList<String> list = new ArrayList();
                        if (c != null) {
                            if (c.moveToFirst()) {
                                do {
                                    String string = c.getString(c.getColumnIndex("name")) + " " +
                                                c.getString(c.getColumnIndex("email"));
                 
                                    list.add(string);
                            } while (c.moveToNext());
                            c.close();
                        } else
                            Toast.makeText (getApplicationContext(), "Ошибка", Toast.LENGTH_SHORT).show();
                        
                        mName = list.toArray(mName);
                        
                        // находим список
                        ListView lvMain = (ListView) findViewById(R.id.listVtot);
 
                        // создаем адаптер
                        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                            android.R.layout.simple_list_item_1, mName);
 
                        // присваиваем адаптер списку
                        lvMain.setAdapter(adapter);
                        
                        break;
            
            }
            
 
                }
        // закрываем подключение к БД
        dbHelper.close();
        }
 
    class DBHelper extends SQLiteOpenHelper {
 
        public DBHelper(Context context) {
            // конструктор суперкласса
            super(context, "myDB", null, 1);
        }
 
        @Override
        public void onCreate(SQLiteDatabase db) {
            // создаем таблицу с полями
            db.execSQL("create table mypredmet ("
                    + "id integer primary key autoincrement," + "name text,"
                    + "email text" + ");");
        }
 
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
 
        }
    }
}


2.
Кликните здесь для просмотра всего текста

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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
package com.example.stracking;
 
import java.util.ArrayList;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
 
public class StudentP extends Activity implements OnClickListener {
 
    Button Add, Read;
    EditText Name, Email;
    String[] nName  = new String[0];
    DBHelper dbHelper;
    Cursor c = null;
    
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.student);
 
        Add = (Button) findViewById(R.id.Add);
        Add.setOnClickListener(this);
 
        Read = (Button) findViewById(R.id.Read);
        Read.setOnClickListener(this);
 
        Name = (EditText) findViewById(R.id.Name);
        Email = (EditText) findViewById(R.id.Email);
        
        // создаем объект для создания и управления версиями БД
        dbHelper = new DBHelper(this);
 
    }
 
    @Override
    public void onClick(View v) {
 
        // создаем объект для данных
        ContentValues cv = new ContentValues();
 
        // получаем данные из полей ввода
        String name = Name.getText().toString();
        String email = Email.getText().toString();
 
        // подключаемся к БД
        SQLiteDatabase db = dbHelper.getWritableDatabase();
 
        switch (v.getId()) {
        
        
        case R.id.Add:
            cv.put("name", name);
            cv.put("email", email);
            db.insert("mystudent", null, cv);
            Name.setText(null);
            break;
            
            
        case R.id.Read:
        
         // делаем запрос всех данных из таблицы mytable, получаем Cursor
                     c = db.query("mystudent", null, null, null, null, null, null);
                    // ставим позицию курсора на первую строку выборки
                    // если в выборке нет строк, вернется false
                ArrayList<String> list = new ArrayList();
                    if (c != null) {
                        if (c.moveToFirst()) {
                            do {
                                String string = c.getString(c.getColumnIndex("name")) + " " +
                                            c.getString(c.getColumnIndex("email"));
             
                                list.add(string);
                        } while (c.moveToNext());
                        c.close();
                    } else
                        Toast.makeText (getApplicationContext(), "Ошибка", Toast.LENGTH_SHORT).show();
                    
                    nName = list.toArray(nName);
                    
                    // находим список
                    ListView Main = (ListView) findViewById(R.id.Vtot);
 
                    // создаем адаптер
                    ArrayAdapter<String> adapterq = new ArrayAdapter<String>(this,
                        android.R.layout.simple_list_item_1, nName);
 
                    // присваиваем адаптер списку
                    Main.setAdapter(adapterq);
                    
                    break;
        
        }
            
        // закрываем подключение к БД
        dbHelper.close();
            }
    }
 
        
    class DBHelper extends SQLiteOpenHelper {
 
        public DBHelper(Context context) {
            // конструктор суперкласса
            super(context, "myDB", null, 1);
        }
 
        @Override
        public void onCreate(SQLiteDatabase db) {
            // создаем таблицу с полями
            db.execSQL("create table mystudent ("
                    + "id integer primary key autoincrement," + "name text,"
                    + "email text" + ");");
        }
 
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
 
        }
    }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
08.06.2015, 19:55     Не работает БД #2
Один раз надо БД создавать, а у вас 2.
Kollinar
1 / 1 / 0
Регистрация: 19.02.2013
Сообщений: 78
09.06.2015, 03:33  [ТС]     Не работает БД #3
Цитата Сообщение от Rube Посмотреть сообщение
Один раз надо БД создавать, а у вас 2.
то есть создание БД убрать, а создание таблицы оставить?
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
09.06.2015, 07:46     Не работает БД #4
DBHelper надо вынести в отдельный класс.
Kollinar
1 / 1 / 0
Регистрация: 19.02.2013
Сообщений: 78
09.06.2015, 17:18  [ТС]     Не работает БД #5
Цитата Сообщение от Rube Посмотреть сообщение
DBHelper надо вынести в отдельный класс.
я создал отдельный класс, а как сделать чтобы создавались 2 разных таблицы, а то там прописано сразу название таблицы.

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
package com.example.stracking;
 
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
 
public class DBHelper extends SQLiteOpenHelper {
 
    // константы для конструктора
    private static final String DATABASE_NAME = "dbjurnal";
    private static final int DATABASE_VERSION = 1;
    public static final String TABLE_NAME = "contact_table";
    public static final String UID = "id";
 
    private static final String SQL_CREATE_ENTRIES = "CREATE TABLE "
            + TABLE_NAME + " (" + UID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
            + "name text," + "email text" + ");";
 
 
    public DBHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
 
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(SQL_CREATE_ENTRIES);
    }
 
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        
    }
}
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
09.06.2015, 17:46     Не работает БД #6
Kollinar, ты бы ради интереса прочитал, что такое база данных.
Грубо и примитивно - это сборище таблиц.
Создал базу данных - создал это сборище.

К чему я?
Ах, да, что тебе мешает, создавая базу, создавать сразу все тыщу мильёнов таблиц, ей "принадлжежащих"?
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
09.06.2015, 21:29     Не работает БД #7
Цитата Сообщение от Kollinar Посмотреть сообщение
а как сделать чтобы создавались 2 разных таблицы
Java
1
2
3
4
5
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(SQL_CREATE_ENTRIES);
        db.execSQL(SQL_ВТОРОЙ_ТАБЛИЦЫ);
    }
Yandex
Объявления
09.06.2015, 21:29     Не работает БД
Ответ Создать тему
Опции темы

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