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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.68
REALIST07
Автор FAQ
Автор FAQ
176 / 176 / 13
Регистрация: 11.06.2010
Сообщений: 934
#1

Создать несколько таблиц в базе данных - Программирование Android

30.10.2013, 15:11. Просмотров 4255. Ответов 10
Метки нет (Все метки)

Как создать 2 таблицы в бд?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2013, 15:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создать несколько таблиц в базе данных (Программирование Android):

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

Подключение к базе данных - Программирование Android
Возник вопрос ,как можно осуществить подключение приложения к базе данных которые располагаются на стороннем сервере?? ? (как брать из их...

Сортировка данных в базе - Программирование Android
А как можно отсортировать данные в базе SqLite?

Доступ к базе данных - Программирование Android
Здравствуйте. Имеется три активити (MainActivity (основная), Program (программы подготовки) и Speciality (специальности)), база данных...

Подключиться к готовой базе данных - Программирование Android
Давно делал программку, из нее взял код. БД лежит в папке проекта \src\main\res\assets\english.sqlite В коде она копируется с помощью...

Подключение к базе данных из ViewPager - Программирование Android
В приложении есть база данных, везде в приложении она работает хорошо, но есть небольшая проблема с ее использованием в ViewPager. При...

10
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
30.10.2013, 23:25 #2
Цитата Сообщение от REALIST07 Посмотреть сообщение
Как создать 2 таблицы в бд?
Поддерживаю. И вообще можно ли создать 2 таблицы в одной базе SqLite?
0
REALIST07
Автор FAQ
Автор FAQ
176 / 176 / 13
Регистрация: 11.06.2010
Сообщений: 934
30.10.2013, 23:29  [ТС] #3
Решил проблему, вот этой программой - SQLite Maestro,которая показывает SQL код,и не забывайте заключать имя таблицы в одинарные кавычки!!!
0
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 440
31.10.2013, 00:26 #4
Цитата Сообщение от REALIST07 Посмотреть сообщение
Как создать 2 таблицы в бд?
Цитата Сообщение от Stylish2013
Поддерживаю. И вообще можно ли создать 2 таблицы в одной базе SqLite?
Цитата Сообщение от REALIST07
Решил проблему, вот этой программой - SQLite Maestro,которая показывает SQL код,и не забывайте заключать имя таблицы в одинарные кавычки!!!
)))))))
0
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
31.10.2013, 00:55 #5
Цитата Сообщение от REALIST07 Посмотреть сообщение
Решил проблему, вот этой программой - SQLite Maestro,которая показывает SQL код,и не забывайте заключать имя таблицы в одинарные кавычки!!!
А как в коде Android использовать это (использовать 2 таблицы), может приведете пример?
0
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 440
31.10.2013, 01:25 #6
Цитата Сообщение от Stylish2013 Посмотреть сообщение
А как в коде Android использовать это (использовать 2 таблицы), может приведете пример?
Да так же как и одну.
Что интересует? Создание? Соединение?
0
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
31.10.2013, 02:26 #7
Цитата Сообщение от REALIST07 Посмотреть сообщение
Как создать 2 таблицы в бд?
например, создать дважды по одной.
0
Gabberr
102 / 102 / 17
Регистрация: 13.10.2009
Сообщений: 403
31.10.2013, 14:22 #8
Вот создание 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
public class DbOpenHelper extends SQLiteOpenHelper {
 
    private static final int DB_VERSION = 1;
    private static final String DB_NAME = "navbase";
 
    public static final String TABLE_NAME = "places";
    public static final String TABLE_NAME2 = "searchHistory";
    public static final String NAME = "name";
    public static final String LAT = "lat";
    public static final String LON = "lon";
    private static final String CREATE_TABLE = "create table " + TABLE_NAME
            + " ( _id integer primary key autoincrement, " + NAME
            + " TEXT NOT NULL unique, " + LAT + " REAL, " + LON + " REAL)";
 
    private static final String CREATE_TABLE2 = "create table " + TABLE_NAME2
            + " ( _id integer primary key autoincrement, " + NAME
            + " TEXT NOT NULL unique)";
 
    public DbOpenHelper(Context context) {
        super(context, DB_NAME, null, DB_VERSION);
    }
 
    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        sqLiteDatabase.execSQL(CREATE_TABLE);
        sqLiteDatabase.execSQL(CREATE_TABLE2);
 
    }
 
    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
    }
 
}
1
Stylish2013
7 / 7 / 1
Регистрация: 20.04.2013
Сообщений: 666
31.10.2013, 14:22 #9
И получается. Мы открываем одно соединение с базой, а работать можем с двумя таблицами, верно?
0
Gabberr
102 / 102 / 17
Регистрация: 13.10.2009
Сообщений: 403
31.10.2013, 16:19 #10
верно.
1
Alexander1991
12.12.2013, 17:04 #11
Всем привет!
У меня возникла следующая проблема: я использовал класс, который указан тремя постами выше (для создания двух таблиц БД). Единственное, что я в нем поменял, это добавил еще один столбец в константу, которая описывает создание второй таблицы, получилось следующее:

Java
1
2
3
private static final String CREATE_TABLE2 = "create table " + TABLE_NAME2
            + " ( _id integer primary key autoincrement, " + NAME
            + " TEXT NOT NULL unique, " + LAT + " TEXT NOT NULL unique)";
В Main Activity я указал, что надо вытаскивать данные из этих двух полей (name и lat) и помещать в соответствующие textview:

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
package com.example.test_bd;
 
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v4.widget.SimpleCursorAdapter;
import android.view.Menu;
import android.widget.ListView;
import android.widget.TextView;
 
public class MainActivity extends Activity {
    
    private static final String[] FROM = {DbOpenHelper.NAME, DbOpenHelper.LAT};
    private static final int[] TO = { R.id.tvItemGoal, R.id.tvItemDate};
 
    private static final String[] PROJECTION = { "_id", DbOpenHelper.NAME, DbOpenHelper.LAT};
    
    TextView mTvDate;
    SimpleCursorAdapter mAdapter;
    ListView mLvGoals;
    DbOpenHelper mHelper;
    SQLiteDatabase mDb;
    Cursor mCursor;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        mAdapter = new SimpleCursorAdapter(this, R.layout.list_item, null, FROM, TO);
        mLvGoals = (ListView) findViewById(R.id.lv);
        mLvGoals.setAdapter(mAdapter);
    }
 
    @Override
    protected void onStart() {
        super.onStart();
        mHelper = new DbOpenHelper(this);
        mDb = mHelper.getWritableDatabase();
        updateListView();
    }
 
    @Override
    protected void onStop() {
        super.onStop();
        mCursor.close();
        mCursor = null;
        mDb.close();
        mHelper.close();
    }
 
    private void updateListView() {
        if (mCursor != null) {
            mCursor.close();
        }
        mCursor = mDb.query(DbOpenHelper.TABLE_NAME2, PROJECTION, null, null, null,
                null, null);
        mAdapter.changeCursor(mCursor);
        mLvGoals.invalidate();
    }
 
}
Так вот, с первой таблицей все хорошо. Со второй не очень: если я указываю только первый столбец name (в массиве FROM), то все работает. Но если я указываю оба столбца, или только второй столбец (lat), то программа вылетает, а LogCat пишет, что не может найти такой столбец при запросе к БД:

12-12 12:49:49.784: E/AndroidRuntime(329): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.test_bd/com.example.test_bd.MainActivity}: android.database.sqlite.SQLiteException: no such column: lat: , while compiling: SELECT _id, lat FROM searchHistory

Подскажите, в чем может быть проблема? Что нужно сделать, чтобы компилятор увидел столбец lat? А то у меня уже идеи кончились
12.12.2013, 17:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2013, 17:04
Привет! Вот еще темы с ответами:

Не удается подключиться к базе данных - Программирование Android
public class DisplayActivity extends Activity { ListView list; LinearLayout ll; Button loadBtn; //private...

Добавление таблиц в базу данных - Программирование Android
Здравствуйте. Хочу добавить ещё одну таблицу в уже существующий файл базы данных. Вот код: public class BookOfLifeDataBaseHelper...

Доступ к базе данных из разных активити - Программирование Android
В общем-то в теме и вопрос, как получить доступ к базе данных и разных активити? Есть класс работы с базой class DBHelper extends...

Подключение к Базе данных скайп for android - Программирование Android
Я знаю что скайп хранит свои персональные данные в базе sqlite3. И для того чтобы поключится к ней и прочитать данные нужно использовать...


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

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

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