2012-01-30 47 views
0

我有两个表一个存储任务和一个评估任务:SQLite视图和查询在Android

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开发?

其次,考虑这个查询:

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

如何实现在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; 

,导致选择的最高评价?我试图将它装入Cursor android.database.sqlite.SQLiteDatabase.query方法和它的兄弟姐妹没有多少运气。

有没有办法将SQL查询作为字符串传递到数据库中并获取结果集?

+0

SQLiteDatabase.execSql(String); – f470071 2015-09-26 12:36:58

回答

3
  • 可以使用SQLiteManager一个Firefox添加-ONN。这是一个用于sqlite数据库的视觉 浏览器。我正在使用它,它非常好。

  • 如果你想学习sqlite语法,你可以使用这个tutorial

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

谢谢,我会检查SQLiteManager – user1178972 2012-01-30 22:17:56

+1

而获胜者是...... https://addons.mozilla.org/en-US/firefox/addon/sqlite-manager/这是一个好得多的工具SQLite数据库浏览器。谢谢穆罕默德! – user1178972 2012-02-02 20:06:11

+0

如果Firefox说因为Firefox已经更新而无法安装它,并且插件还没有准备好最新版本,那么您可以直接从google代码repo [here](https://code.google.com/p/SQLite的经理/下载/列表)。为我工作;-) – 2013-05-14 14:24:32

0

你试过.execSQL。你可以像

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

+0

是的,你不能返回任何东西:'执行一个不是SELECT或任何其他返回数据的SQL语句的单个SQL语句。 它无法返回任何数据(例如受影响的行数)。相反,鼓励在可能的情况下使用insert(String,String,ContentValues),update(String,ContentValues,String,String [])等。 – user1178972 2012-01-30 21:56:16

1

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

2)使用SQLiteDatabase.rawQuery(SQL字符串,字符串[] selectionArgs两个),其中SQL是一个查询字符串

+0

+1对于rawQuery(),我认为SQLite浏览器也不错。我只是使用Android SDK中的sqlite3程序。 – Izkata 2012-01-30 22:01:50

+0

感谢您的rawQuery - 我会研究它。 – user1178972 2012-01-30 22:03:33

+0

但我仍然需要一个支持视图的好数据库浏览器 - 任何人? – user1178972 2012-01-30 22:04:14