2012-01-30 42 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