SQLite вид и запрос на Android - PullRequest
0 голосов
/ 31 января 2012

У меня есть две таблицы: одна для хранения задачи и одна для оценки задачи:

create table task(
  _id  integer primary key autoincrement,
  task text not null);

create table eval (
  _id    integer primary key autoincrement,
  taskid integer,
  eval   integer);

Некоторые данные:

INSERT INTO task VALUES (1,"A small job");
INSERT INTO task VALUES (2,"A easy job");
INSERT INTO eval VALUES (1,1,1);
INSERT INTO eval VALUES (2,1,2);
INSERT INTO eval VALUES (3,2,1);
INSERT INTO eval VALUES (4,2,2);

Затем представление, объединяющее две таблицы:

  CREATE VIEW status AS 
  SELECT eval._id   AS _id, 
  eval.taskid   AS taskid, 
  eval.eval     AS eval, 
  task.task 
  FROM task JOIN eval 
  ON task._id = eval.taskid;

Браузер баз данных SQLite не поддерживает представления. Какой хороший браузер базы данных для разработки под Android на linux?

Во-вторых, рассмотрите этот запрос: выберите наивысшую оценку для каждой задачи

SELECT s.task, s.eval 
FROM status AS s 
JOIN (
  SELECT task, MAX(eval) AS maxeval 
  FROM status 
  GROUP BY task
) AS pm ON s.task = pm.task AND s.eval = pm.maxeval;

В результате:

s.task       s.eval
A easy job   2
A small job  2

Как реализовать этот запрос в приложении для Android? Я попытался упаковать его в метод Cursor android.database.sqlite.SQLiteDatabase.query и его братьев и сестер без особой удачи.

Есть ли способ просто передать SQL-запрос в виде строки в базу данных и получить набор результатов обратно?

Ответы [ 3 ]

3 голосов
/ 31 января 2012
  • вы можете использовать SQLiteManager дополнение Firefox.Это визуальный браузер для базы данных sqlite.Я использую его, и это очень приятно.

  • Если вы хотите изучить синтаксис sqlite, вы можете использовать этот учебник .

  • Вы можете использовать db.execSQL(sqlCommand) для операций обновления, записи и удаления.Для операций чтения вы можете использовать cursor = db.rawQuery(sqlQuery, null);, где db - объект SQLiteDatabase.
1 голос
/ 31 января 2012

1) Браузер SQLite - http://sqlitebrowser.sourceforge.net/

2) Использовать SQLiteDatabase.rawQuery (String sql, String [] selectionArgs), где sql - строка с запросом

0 голосов
/ 31 января 2012

Вы пробовали .execSQL. Вы можете использовать его как

db.execSQL («CREATE TABLE User (имя пользователя varchar (5), pwd varchar (15))»);

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