Android上的SQLite视图和查询

时间:2012-01-30 21:49:50

标签: android sqlite

我有两个表来存储一个任务,一个用于评估任务:

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数据库浏览器不支持视图。什么是Linux上android开发的优秀数据库浏览器?

其次,请考虑此查询:选择每项任务的最高评估

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 个答案:

答案 0 :(得分:3)

  • 您可以使用SQLiteManager firefox附加组件。这是一个视觉 用于sqlite数据库的浏览器。我正在使用它,非常好。

  • 如果您想学习sqlite语法,可以使用此tutorial

  • 您可以使用db.execSQL(sqlCommand)更新,写入和删除 操作。对于读取操作,您可以使用cursor = db.rawQuery(sqlQuery, null);,其中db是SQLiteDatabase的对象。

答案 1 :(得分:1)

1)SQLite浏览器 - http://sqlitebrowser.sourceforge.net/

2)使用SQLiteDatabase.rawQuery(String sql,String [] selectionArgs)其中sql是带查询的字符串

答案 2 :(得分:0)

你试过.execSQL吗?您可以像

一样使用它

db.execSQL(“CREATE TABLE User(用户名varchar(5),pwd varchar(15))”);