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

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

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

Запись данных в 2 таблицы SQLite - Программирование Android

10.06.2015, 23:21. Просмотров 499. Ответов 3
Метки нет (Все метки)

Как заполнять данные в базу данных при двух таблицах?

Получается лишь в одну таблицу занести данные. А как их заносить в другую?. Есть таблица Компании и фирмы. При нажатии на компании открывается лист вью который содержит все фирмы данной компаниию. Это все работает. Только я не могу понять как програмно добавлять записи в таблицы. Так что бы они соответствовали выбраному элементу. У меня получается лишь добавить данные лишь в таблицу "Компании".

вот код таблиц

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
public class DBHelper extends SQLiteOpenHelper {
 
    public static final String TAG = "DBHelper";
 
    // columns of the companies table
    public static final String TABLE_COMPANIES = "companies";
    public static final String COLUMN_COMPANY_ID = "_id";
    public static final String COLUMN_COMPANY_NAME = "company_name";
    public static final String COLUMN_COMPANY_ADDRESS = "address";
    public static final String COLUMN_COMPANY_WEBSITE = "website";
    public static final String COLUMN_COMPANY_PHONE_NUMBER = "phone_number";
 
    // columns of the employees table
    public static final String TABLE_EMPLOYEES = "employees";
    public static final String COLUMN_EMPLOYE_ID = COLUMN_COMPANY_ID;
    public static final String COLUMN_EMPLOYE_FIRST_NAME = "first_name";
    public static final String COLUMN_EMPLOYE_LAST_NAME = "last_name";
    public static final String COLUMN_EMPLOYE_ADDRESS = COLUMN_COMPANY_ADDRESS;
    public static final String COLUMN_EMPLOYE_EMAIL = "email";
    public static final String COLUMN_EMPLOYE_PHONE_NUMBER = COLUMN_COMPANY_PHONE_NUMBER;
    public static final String COLUMN_EMPLOYE_SALARY = "salary";
    public static final String COLUMN_EMPLOYE_COMPANY_ID = "company_id";
 
    private static final String DATABASE_NAME = "companies.db";
    private static final int DATABASE_VERSION = 1;
 
    // SQL statement of the employees table creation
    private static final String SQL_CREATE_TABLE_EMPLOYEES = "CREATE TABLE " + TABLE_EMPLOYEES + "("
            + COLUMN_EMPLOYE_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
            + COLUMN_EMPLOYE_FIRST_NAME + " TEXT NOT NULL, "
            + COLUMN_EMPLOYE_LAST_NAME + " TEXT NOT NULL, "
            + COLUMN_EMPLOYE_ADDRESS + " TEXT NOT NULL, "
            + COLUMN_EMPLOYE_EMAIL + " TEXT NOT NULL, "
            + COLUMN_EMPLOYE_PHONE_NUMBER + " TEXT NOT NULL, "
            + COLUMN_EMPLOYE_SALARY + " REAL NOT NULL, "
            + COLUMN_EMPLOYE_COMPANY_ID + " INTEGER NOT NULL "
            +");";
 
    // SQL statement of the companies table creation
    private static final String SQL_CREATE_TABLE_COMPANIES = "CREATE TABLE " + TABLE_COMPANIES + "("
            + COLUMN_COMPANY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
            + COLUMN_COMPANY_NAME + " TEXT NOT NULL, "
            + COLUMN_COMPANY_ADDRESS + " TEXT NOT NULL, "
            + COLUMN_COMPANY_WEBSITE + " TEXT NOT NULL, "
            + COLUMN_COMPANY_PHONE_NUMBER + " TEXT NOT NULL "
            +");";
 
    public DBHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
 
    @Override
    public void onCreate(SQLiteDatabase database) {
        database.execSQL(SQL_CREATE_TABLE_COMPANIES);
        database.execSQL(SQL_CREATE_TABLE_EMPLOYEES);
    }
 
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        Log.w(TAG,
                "Upgrading the database from version " + oldVersion + " to "+ newVersion);
        // clear all data
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_EMPLOYEES);
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_COMPANIES);
 
        // recreate the tables
        onCreate(db);
    }
 
    public DBHelper(Context context, String name, CursorFactory factory,int version) {
        super(context, DATABASE_NAME, factory, DATABASE_VERSION);
    }
}
а вот так я добавляю данные в таблицу "Компании"

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
@Override
    public void onCreate(SQLiteDatabase database) {
        database.execSQL(SQL_CREATE_TABLE_COMPANIES);
        ContentValues cv = new ContentValues();
        cv.put(COLUMN_COMPANY_NAME, "Cooperator");
        cv.put(COLUMN_COMPANY_ADDRESS, "st. Pushkina");
        cv.put(COLUMN_COMPANY_WEBSITE, "blablablaa96");
        cv.put(COLUMN_COMPANY_PHONE_NUMBER, "4546545");
        database.insert(SQL_CREATE_TABLE_COMPANIES, null, cv);
        
        
        database.execSQL(SQL_CREATE_TABLE_EMPLOYEES);
    }
Подскажите как связывать данные между собой по айди элемента
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2015, 23:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Запись данных в 2 таблицы SQLite (Программирование Android):

Чтение и запись данных в локальную БД SQLite - Программирование Android
Есть вот такой класс для работы локальной работы с БД. package com.tanatix.checkinternetresourceschanges; import...

SQLite Связаные таблицы - Программирование Android
Есть таблицы Магазин и товар - Магазин как ключевая. Одну таблицу создает сразу две не хочет. class DBHelper extends...

Выбрать запись по позиции SQLite - Программирование Android
Доброго времени суток всем . Давно уже пытаюсь решить проблему с SQLite - нужно получить запись зная её позицию. По началу это очень легко...

SQLite дополнить записи из таблицы - Программирование Android
Можно ли составить подобный запрос (вроде видел нечто подобное, но повторно найти пример не получилось) Есть таблица AAA. На ее основе...

Передача SQLite таблицы по TCP - Программирование Android
Подскажите как сделать хотя бы в теории, от примера не откажусь.

Как отобразить запись из базы sqlite - Программирование Android
Имеется база, 1 активити и пару виджетов для добавления записей в базу sqlite. Вопрос такой: Как показать количество записей в базе на...

3
androidlover
3 / 3 / 0
Регистрация: 20.04.2015
Сообщений: 9
11.06.2015, 00:35 #2
loren96, на уровне базы данных у вас должен быть установлен внешний ключ с таблицы фирм к таблице компаний. Через этот внешний ключ будет идти связь.
0
loren96
0 / 0 / 0
Регистрация: 06.04.2015
Сообщений: 74
11.06.2015, 01:03  [ТС] #3
а можно пример кода?
0
androidlover
3 / 3 / 0
Регистрация: 20.04.2015
Сообщений: 9
11.06.2015, 13:33 #4
loren96, ну смотрите, вот у вас в таблице employee есть столбец company_id. Чтобы его установить, вы для него передаете id связанной компании
Java
1
cv.put(COLUMN_EMPLOYE_COMPANY_ID, здесь_id_компании);
все остальные данные будут передаваться также
только остается получить id компании
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.06.2015, 13:33
Привет! Вот еще темы с ответами:

Как вытащить значение из таблицы бд sqlite - Программирование Android
Здравствуйте.Помогите пожалуйста разобраться. Суть такая.Есть две таблицы в бд.Нужно вытащить значение из одной таблицы и подставить в...

Как установить курсор на запись с введенным ID в SQLite - Программирование Android
Добрый день, имеется таблица с записями в sqlite. В Активити я должен вывести запись на экран в подготовленную форму по ее id. Но как...

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

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


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

Или воспользуйтесь поиском по форуму:
4
Yandex
Объявления
11.06.2015, 13:33
Ответ Создать тему
Опции темы

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