Вопрос по программированию Android с использованием SQL Lite - PullRequest
0 голосов
/ 17 февраля 2019

Я все еще новичок в программировании Android, обычно я пишу с помощью Android Studio, вот мой вопрос о SQL lite

  1. Как вы оцениваете свою базу данных с вашего телефона Android?
  2. где вы положили свой файл .db?некоторые говорят, что мне нужно поместить его в папку с ресурсами
  3. Я часто просматриваю какое-то учебное пособие, в котором они помещают имя базы данных, создают таблицу, опускают запрос таблицы в sqllitehelper, почему они помещают его снова?

  4. после того, как вы создали базу данных в браузере БД для программного обеспечения sqlite, что вы делали?

  5. это вопрос о программировании Android, я часто прохожу некоторые урокио crud или о том, что связано с базой данных, но я не вижу никаких INSERT INTO QUERY
  6. вам нужен xampp для локального сервера или что?

1 Ответ

0 голосов
/ 17 февраля 2019

как вы оцениваете свою базу данных со своего телефона Android?

Если вы используете Android SDK, у вас обычно есть Помощник базы данных (подкласс SQLiteOpenHelper, если база данных являетсяранее существующая база данных затем SQLiteAssetHelper скопирует файл базы данных из папки ресурсов).

  • Обратите внимание, что вышеизложенное предполагает предполагаемое использование SQLite в качестве встроенной базы данных, еслиесли вы хотите совместно использовать базу данных на нескольких устройствах, SQLite, вероятно, не будет выбранной базой данных (может подойти Firebase) ..

где вы положили свой файл .db?кто-то говорит, что мне нужно поместить его в папку «assests»

Как указано выше, если это уже существующая база данных, то папка assets (в случае SQLiteAssetHelper) скопирует базу данных в обычно используемый /data / data // database / folder.

  • Файл ресурса сжат и доступен только для чтения, поэтому приложение скопирует файл в используемую папку, обычно, как указано выше.

  • PS файл не должен иметь никакого расширения файла или может иметь любое допустимое расширение файла.Ничто из того, что имя файла НЕ ДОЛЖНО совпадать с именем базы данных, так как это файл, который будет открыт..

Я часто просматриваю какое-то руководство, где они помещают имя базы данных, создают таблицу, опускают запрос к таблице внутри sqllitehelper, почему они помещают его снова?

Обычно это можно увидеть в методе onUpgrade .

Что происходит с подклассом SQLiteOpenHelper, так это то, что если база данных не существует, то база данных создается и создается изваша перспектива пуста.

  • на самом деле для android будет существовать как минимум две системные таблицы;
    • 1) sqlite_master , который представляет собой таблицу таблиц и других элементов, также называемых схемой, и
    • android_metadata , который содержит языковой стандарт

После создания базы данных вызывается метод onCreate и обычно таблицы (и возможные другие элементы, индексы, триггеры, представления)будет создан с использованием соответствующего SQL, обычно вызываемого с использованием метода SQLiteDatabase execSQL .

  • База данных НЕ создается просто путем создания экземпляра помощника, чтобы была предпринята попытка (подразумеваемая или явная) открыть базу данных, именно тогда база данных проверяется на наличие и создается.

Таким образом, добавление, например, другой таблицы НЕ является просто случаем добавления более onCreate метода, поскольку он не будет работать.

Как таковоеSQLiteOpenHelper включает в себя, посредством 4-го параметра, номер версии для облегчения обновления базы данных (например, добавление новой таблицы).

Номер версии хранится в заголовке базы данных и проверяется SQLiteOpenHelper на соответствиезначение прошло.Если переданное значение больше сохраненного значения, вызывается onUpgrade .

  • , если значение меньше, чем вызывается onDownGrade, и это приведет к исключению, если метод onDownGrade не будет закодирован в подклассе SQLiteOpenHelper.

Часто onUpgrade удаляет (удаляет) таблицы, а затем вызывает onCreate для их создания, и это то, что вы видели (вероятно).

  • Примечание ЛЮБЫЕ СУЩЕСТВУЮЩИЕ ДАННЫЕ БУДУТ УТЕРЯТЬ
  • , чтобы не потерять данные, вы бы использовали более сложный / углубленный код..

после создания базы данных в браузере БД для программного обеспечения sqlite, что вы сделали?

Скопируйте файл в папку assets / database (при использованииSQLiteAssetHelper) или иногда просто в папку ресурсов.

  • Возможно, вам придется создать папку ресурсов и, следовательно, папку базы данных.
  • Я бы лично порекомендовал закрыть DB Browser, снова открыть его, проверить данные в соответствии с ожиданиями и затем снова закрыть перед копированием файла.

это вопрос о программировании AndroidЯ часто читаю какое-то руководство по crud или тому, что связано с базой данных, но я не вижу никаких INSERT INTO QUERY

В Android SDK есть много удобных методов, которые создают SQL от вашего имени, в том числе (еслипараметры используются соответственно) при необходимости экранирование аргументов и защита от внедрения SQL.Рекомендуется использовать вспомогательные методы.

Вот пример того, что вы могли бы вместо этого увидеть (для INSERT): -

public long addUserReg(long studentId, String course) {
    ContentValues cv = new ContentValues();
    cv.put(COL_USERREG_STUDENT_ID,studentId);
    cv.put(COL_USERREG_COURSE,course);
    return mDB.insert(TBL_USERREG,null,cv);
}
  1. Методу передаются два значения.
  2. Создается объект ContentValues ​​(рассматривается как список кортежей с ключом (имя, которое соответствует соответствующему имени COLUMN) и значением, которое будет помещено в этот столбец).
  3. AПара значений COLUMN добавляется в cv (экземпляр объекта ContentValues). COL_USERREG_STUDENT_ID содержит имя столбца.
  4. Другая пара значений добавляется в cv.
  5. обратите внимание, что выможет считать cv интеллектуальным, например, если вы передаете байтовый массив, то генерируется соответствующий код для добавления BLOB.
  6. Вызывается вспомогательный метод insert , предполагая, что COL_USERREG_STUDENT_ID разрешается в studentid и COL_USERREG_COURSE разрешается в course , а TBL_USERREG разрешается в course_table , тогда результирующий SQL будет эффективноINSERT OR IGNORE INTO course_table (studentid,course) VALUES('1','3') (при условии, что пройденное значение студента равно 1, а значение курса - 3) .

Вам нужен xampp для локального сервера или что?

Нет (Я полагаю, XAMPP для A pache (сервер) M YSQL не SQLITE P HP вместе с P HPMYADMIN), но см. выше о том, что SQLite предназначен как встроенная база данных, а не какбаза данных типа клиент / сервер .См. Соответствующее использование для SQLite

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...