android多表查詢
① android 怎麼做多表聯查
String [] projection= new String[]{
Phones._ID,
Phones.TYPE,韓國女裝
Phones.NUMBER,
"(SELECT NAME FROM PEOPLE AS people WHERE PEOPLE._id =PERSON) AS peopleName",
// new StringBuilder().append("(SELECT NAME FROM PEOPLE AS people WHERE PEOPLE._id =").append(Phones.PERSON_ID)
// .append(") AS peopleName").toString(),
"(SELECT DATA FROM PHOTOS AS PHOTOS WHERE PHOTOS.PERSON =PERSON) AS peopleLogo",
// new StringBuilder().append("(SELECT DATA FROM PHOTOS AS PHOTOS WHERE PHOTOS.PERSON =").append(Phones.PERSON_ID)
// .append(") AS peopleLogo").toString()
}; android 軟體鍵盤 實現 -- 斷點記錄
String selection = "0==0) GROUP BY (PERSON";
Cursor cursor = context.getContentResolver().query(Phones.CONTENT_URI, projection, selection, null, null);
while(cursor.moveToNext()){
System.out.println(cursor.getString(cursor.getColumnIndex(Phones.NUMBER)));
System.out.println(cursor.getString(cursor.getColumnIndex("peopleName")));
}
② Android 資料庫有多張表欄位都相同,如果查詢這張表的所有數據
多張表欄位相同,對數據查詢沒有什麼影響,只是涉及到同時查詢多張表的時候,通過別名的方式解決。比如:
表A,欄位id,nam
表B,欄位id,calss
現在查詢:
SELECT a.name FROM A a
LEFT JOIN B b ON b.id=a.id
WHERE 1=1
③ 直接作sqlite,android怎麼對sqlite進行多表作,相關聯
低並發操作SQLite只支持平面事務;它沒有嵌套和營救點能力。嵌套意味著在一個事務中可以有子事務的能力。營救點允許一個事務返回到前面已經到達的狀態。它沒有能力確保高層次事務的並發。它允許在單個的資料庫文件上多個並發的讀事務,但是只能有一個排他的寫事務。這個局限性意味著如果有事務在讀資料庫文件的一部分,所有其他的事務將被禁止寫該文件的任何一部分。類似的,如果有事務在寫資料庫文件的一部分,所有其他事務將被禁止讀或者寫該文件的任何一部分。應用限制因為它事務處理的有限並發,SQLite只擅長處理小型的事務。在很多情況下,這不是問題。每個應用迅速的完成它的資料庫工作然後繼續前進,因此沒有一個事務會持有資料庫超過多少毫秒。但是在一些應用中,特別是寫入密集的,要求的並發的事務處理(表或者行級別的而不是資料庫級別的)那麼你將要為該應用使用其他不同的DBMS。SQLite並不打算成為一個企業DBMS。他最適合於實現,維護和管理的簡單性比商業資料庫的無盡復雜特性更為重要的情況。NFS問題SQLite使用本地文件鎖原語來控制事務處理的並發性。如果資料庫文件駐留在網路分區上,可能會導致文件鎖不能工作。很多的NFS實現被認為在它們的文件鎖中是有bug的(在Unix和Windows上)。如果文件鎖不能像預計的一樣工作,那麼就可能會有兩個或兩個以上的應用程序在同時修改相同資料庫的同一部分,導致了資料庫的毀壞。因為這個問題的出現是因為位於下層的文件系統的實現的BUG,所以SQLite沒有法阻止它的發生。另一原因是大多數網路文件系統的連接延時,效果不是很好。在這種環境下,在資料庫文件必須要跨網路訪問的情況下,實現了客戶端-伺服器的模型的DBMS會比SQLite更有效。資料庫規模因為它的開發人員的開發設計選擇,SQLite可能不是一個做非常大型的資料庫好選擇。在理論上,一個資料庫文件文件可以有2TB(241)。日誌子系統的內存開銷和資料庫大小是成比例的。對每個寫事務,無論事務實際是寫是讀那個頁,SQLite為每個資料庫頁維護一個內存內信息位。默認的頁大小是1024位元組。即使如此,對一個有超過幾百萬頁的資料庫,內存開銷可能成為一個嚴重的瓶頸。對象的數目和類型一個表或者索引被限制為最多有264–1個項。當然,你不可能有這么多的條目,因為資料庫的241位元組大小限制。在SQLite的當前的實現中,一個單獨的條目能夠持有230位元組的數據。(下層的文件格式支持行大小相當於262位元組的數據。)在打開一個資料庫文件時,SQLite會閱讀並且預處理來自主目錄表的所有條目並且創建很多內存目錄對象。所以,為了最好的性能,最好控製表,索引,視圖和觸發器的數目。同樣雖然沒有限製表中列的數目,超過幾百列還是似乎太過的。只有表開始的31列是候選為必然被優化的。你能夠在一個索引中盡可能加入列,但是有超過30列的索引將不會被用來優化。宿主變數引用在一些嵌入DBMS中,SQL語句能夠直接引用宿主變數(即來自應用程序空間的那些值)。在SQLite中這是不行的。作為替代SQLite允許使用sqlite3_bind_*API函數來對輸入參數而不是輸出值綁定對SQL語句宿主變數。這種策略通常比直接的訪問策略更好,因為後者需要特殊的預處理來將SQL語句轉化為特殊的API調用。存儲過程很多DBMS有被稱為存儲過程的能力來創建和存儲。存儲過程是形成邏輯作業單元和執行特殊任務的一組SQL語句。SQL查詢過程能夠使用這些過程。SQLite沒有這個能力。另外一些局限不支持外鍵如果你的表格中有類似的語句,sqlite會忽略的:createtablezope_suf.userroles(namevarchar(64)notnullreferenceszope_suf.users(name)
④ android 怎麼對sqlite進行多表操作!
相關聯的話可以用動態檢索,dwname.setfilter() 控制篩選條件,動態檢索2個窗口的數據,另外兩個不同窗口UPDATE到同一張表? 建議你創建第三個數據窗口,根據前2個數據窗口動態的INSERT,SETITEM來修改第3個數據窗口的內容,然後UPDATE,用DATASTORE也行。 s
⑤ android 自建的ContentProvider,其中定義了多個表,如何通過表中任意列數據,獲得其所在行的其他數據
mSQLiteDatabase.query(true, "table", columns, "name=?",String[]{"tom"}, null, null, null, null);
⑥ android 怎麼查看多媒體表
通過調用Android的API,可以實現相冊,播放器,錄音和攝像等功能。這一章需要掌握如下功能:
q 多媒體的ContentProvider的調用
q Camera
q AudioRecord和AudioTrack
q MediaPlayer
1.1 獲取多媒體信息
多媒體信息?在pc中的音樂播放器總是很容易的顯示歌手名、歌曲名、專輯名、年代。在Android中應該如何獲取這些信息呢?
1.1.1 查看多媒體ContentProvider
前面我們學習了ContentProvider來保存和檢索數據,Android為常用的數據類型(如:音視頻、圖片和聯系方式等)提供了大量的ContentProvider,它們被定義在android.provider包下。那麼我們如何獲取多媒體的ContentProvider呢。
(1) 在Eclipse中添加Android自帶的FileExplorer視圖:
菜單欄->window->show view->other->Android->FileExplorer
(2) 開啟模擬器,在FileExplorer中查看data/data/com.android.providers.media/databases/(如圖1.1)
(3) 將external.db文件 pull到pc上,用sqlite工具(可以使用火狐插件SQliteManager)查看:(如圖1.2)
(4) 查看錶結構:
⑦ 直接作sqlite,android怎麼對sqlite進行多表作,相關聯
SQLite是輕量級嵌入式資料庫引擎,它支持 SQL 語言,並且只利用很少的內存就有很好的性能。此外它還是開源的,任何人都可以使用它。許多開源項目((Mozilla, PHP, Python)都使用了 SQLiteSQLite 由以下幾個組件組成:SQL 編譯器、內核、後端以及附件。SQLite 通過利用虛擬機和虛擬資料庫引擎
(VDBE),使調試、修改和擴展 SQLite 的內核變得更加方便。
1. Android 集成了 SQLite 資料庫 Android 在運行時(run-time)集成了 SQLite,所以每個 Android 應用程序都可以使用 SQLite 資料庫。
2. 資料庫存儲在 data/< 項目文件夾 >/databases/ 下。 Android 開發中使用 SQLite 資料庫 Activites 可以通過 Content Provider 或者 Service 訪問一個資料庫。
3. Android 提供了 SQLiteOpenHelper 創建一個資料庫,只要繼承 SQLiteOpenHelper 類,就可以輕松的創建資料庫。SQLiteOpenHelper 類根據開發應用程序的需要,封裝了創建和更新資料庫使用的邏輯。
4. SQLiteOpenHelper 的子類,至少需要實現三個方法:
1.構造函數,調用父類 SQLiteOpenHelper 的構造函數。這個方法需要四個參數:上下文環境(例如,一個 Activity),資料庫名字,一個可選的游標工廠(通常是 Null),一個代表你正在使用的資料庫模型版本的整數。
2.onCreate()方法,它需要一個 SQLiteDatabase 對象作為參數,根據需要對這個對象填充表和初始化數據。
3.onUpgrage() 方法,它需要三個參數,一個 SQLiteDatabase 對象,一個舊的版本號和一個新的版本號,這樣就可以清楚如何把一個資料庫從舊的模型轉變到新的模型。
⑧ Android用query怎麼進行多條件查詢
SQLiteDatabase 給我提供的方法很不實用,還是建議樓主自己寫sql語句,參數想怎麼傳都可以x0dx0a例如:Cursor c = db.rawQuery("select * from user where username=? and password = ?",x0dx0anew Stirng[]{"用戶名","密碼"});x0dx0ax0dx0a如果你非要調用SQLiteDatabase的query方法,那可以這樣x0dx0adb.query("表名", new String[]{"欄位1,欄位2"}, "條件1=? and 條件2=?", new String[]{"條件1的值,條件2的值"},null,null,null)
⑨ android 資料庫表查詢出來的多條記錄返回客戶端怎麼封裝成json string
sqlite中每一行看成一個JSONObject,結果集看成jsonarray。