我有两个表来存储一个任务,一个用于评估任务:
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查询作为字符串传递到数据库并获得结果集?
答案 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))”);