當前位置:首頁 » 數據倉庫 » 安卓設備參數資料庫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

安卓設備參數資料庫

發布時間: 2023-07-08 07:55:19

① android手機使用的是什麼資料庫

一般移動的平台如iphone, android都是使用sqlite資料庫,不過也有些在網路間傳輸使用xml,和json的,兩種格式都是java原生支持,解析也比較方便,還方便在網路間傳輸。

② Android開發怎麼查看和管理sqlite資料庫

在Android中可以使用Eclipse插件DDMS來查看,也可以使用Android工具包中的adb工具來查看。android項目中的sqlite資料庫位於/data/data/項目包/databases中。

使用DDMS導出sqlite資料庫。

1、首先打開android項目的調試模式,然後找到顯示DDMS:


選擇DDMS


2、切換到DDMS,顯示FileExplorer窗口,找到/data/data/


然後找到程序包的文件夾,打開databases,就能看到sqlite資料庫文件了。選擇將其導出。


這樣就把sqlite資料庫文件以文件的方式導出來了,然後使用sqlite界面管理工具如sqliteadministrator、sqliteman或者firefox插件sqlitemanager等打開就可以了。

使用adb工具訪問sqlite資料庫

AndroidDebugBridge(ADB)是Android的一個通用調試工具,它可以更新設備或模擬器中的代碼,可以管理預定埠,可以在設備上運行shell命令,我們知道android是基於Linux內核,它的內部文件結構也是採用linux文件組織方式,因此訪問它的文件結構需要使用shell。這次我們就會用shell來訪問android應用中的sqlite資料庫文件。

1、運行cmd,切換到android-sdk目錄,運行adb.exe,加上參數shell,出現#號就代表進入了shell命令模式,注意adb要在Android模擬器運行時才能進入shell:


2、shell命令記住兩個基本命令ls和cd,類似windows命令提示行中的dir和cd,代表列出當前目錄下文件列表和進入到指定目錄。了解閉手昌這兩個命令之後,就可以找到data/data/項目包名/databases:


找到資料庫文件:


接下來就是使用sqlite管理工具來進行轎扒操作了。鍵入sqlite3資料庫名就進入了sqlite管理模式了。


在android的sdk中自帶了sqlite3.exe,這是sqlite的官方管理工具,它是一個命令行工具。為了使用方便,將其路徑注冊到系統環境變數path中,即將;%Android_Home%加在Path中,這樣只樣運行sqlite3,就能直接打開sqlite管理工具了。


sqlite管理資料庫篇

sqlite命令行工具默認是以;結束語句的。所以如果只是一行語句,要在末尾加;,或者在下一行中鍵入;,這樣sqlite命令才會被執行。

sqlite常薯李用命令:

.tables--查看資料庫的表列表

.exit--退出sqlite命令行


③ android開發 資料庫的使用

SQLite是輕量級嵌入式資料庫引擎,它支持 SQL 語言,並且只利用很少的內存就有很好的性能。此外它還是開源的,任何人都可以使用它。許多開源項目((Mozilla, PHP, Python)都使用了 SQLite,SQLite 由以下幾個組件組成:SQL 編譯器、內核、後端以及附件。SQLite 通過利用虛擬機和虛擬資料庫引擎(VDBE),使調試、修改和擴展 SQLite 的內核變得更加方便。

特點:
面向資源有限的設備, 沒有伺服器進程, 所有數據存放在同一文件中跨平台,可自由復制。

SQLite 基本上符合 SQL-92 標准,和其他的主要 SQL 資料庫沒什麼區別。它的優點就是高效,Android 運行時環境包含了完整的 SQLite。

SQLite 和其他資料庫最大的不同就是對數據類型的支持,創建一個表時,可以在 CREATE TABLE 語句中指定某列的數據類型,但是你可以把任何數據類型放入任何列中。當某個值插入資料庫時,SQLite 將檢查它的類型。如果該類型與關聯的列不匹配,則 SQLite 會嘗試將該值轉換成該列的類型。如果不能轉換,則該值將作為其本身具有的類型存儲。比如可以把一個字元串(String)放入 INTEGER 列。SQLite 稱這為「弱類型」(manifest typing.)。 此外,SQLite 不支持一些標準的 SQL 功能,特別是外鍵約束(FOREIGN KEY constrains),嵌套 transcaction 和 RIGHT OUTER JOIN 和 FULL OUTER JOIN, 還有一些 ALTER TABLE 功能。 除了上述功能外,SQLite 是一個完整的 SQL 系統,擁有完整的觸發器,交易等等。

Android 集成了 SQLite 資料庫 Android 在運行時(run-time)集成了 SQLite,所以每個 Android 應用程序都可以使用 SQLite 資料庫。

對於熟悉 SQL 的開發人員來時,在 Android 開發中使用 SQLite 相當簡單。但是,由於 JDBC 會消耗太多的系統資源,所以 JDBC 對於手機這種內存受限設備來說並不合適。因此,Android 提供了一些新的 API 來使用 SQLite 資料庫,Android 開發中,程序員需要學使用這些 API。

資料庫存儲在 data/< 項目文件夾 >/databases/ 下。 Android 開發中使用 SQLite 資料庫 Activites 可以通過 Content Provider 或者 Service 訪問一個資料庫。

下面會詳細講解如果創建資料庫,添加數據和查詢資料庫。 創建資料庫 Android 不自動提供資料庫。在 Android 應用程序中使用 SQLite,必須自己創建資料庫,然後創建表、索引,填充數據。

Android 提供了 SQLiteOpenHelper 幫助你創建一個資料庫,你只要繼承 SQLiteOpenHelper 類,就可以輕松的創建資料庫。SQLiteOpenHelper 類根據開發應用程序的需要,封裝了創建和更新資料庫使用的邏輯。

SQLiteOpenHelper 的子類,至少需要實現三個方法:

1 構造函數,調用父類 SQLiteOpenHelper 的構造函數。這個方法需要四個參數:上下文環境(例如,一個 Activity),資料庫名字,一個可選的游標工廠(通常是 Null),一個代表你正在使用的資料庫模型版本的整數。

2 onCreate()方法,它需要一個 SQLiteDatabase 對象作為參數,根據需要對這個對象填充表和初始化數據。

3 onUpgrage() 方法,它需要三個參數,一個 SQLiteDatabase 對象,一個舊的版本號和一個新的版本號,這樣你就可以清楚如何把一個資料庫從舊的模型轉變到新的模型。

④ Android一般採用什麼資料庫

用的Eclipse,數據量的話還可以把,因為是初學,所以就打算先少弄幾個景點先試試,我想的是能不能做到應用去鏈接一個遠端的資料庫,就是比方說點開一個景點信息,它是從資料庫中下載出來的。。額。。專業的我也不會說。。

⑤ Android一般採用什麼資料庫

Android一般採用sqlite資料庫作為數據存儲方案。
通常的資料庫有關系型數據如:ms ql ,mysql,oracle等,非關系型nosql資料庫 如mongodb,redis
android作為手機端的手機操作系統,是無法直接操作大型的關系型或是no sql類型的資料庫的。
從你的應用描述中景點等信息都可以選擇存儲在sqlite中。
但是圖片這些信息還是建議你存儲到伺服器上,以文件的形式存儲。
還有一種方式是在伺服器中使用任何的關系型和非關系型資料庫存儲你的所有數據,但是你的android應用需要通過api去訪問你的景點圖片信息。

⑥ 安卓需要存一些參數信息、測量數據和計算結果,File和SQlite哪個好

使用SQLite方式存儲數據

在Android中一共提供了5種數據存儲方式,分別為:

(1)Files:通過FileInputStream和FileOutputStream對文件進行操作。具體使用方法可以參閱博文《Android學習筆記34:使用文件存儲數據》。

(2)Shared Preferences:常用來存儲鍵值對形式的數據,對系統配置信息進行保存。具體使用方法可以參閱博文《Android學習筆記35:使用Shared Preferences方式存儲數據》。

(3)Content Providers:數據共享,用於應用程序之間數據的訪問。

(4)SQLite:Android自帶的輕量級關系型資料庫,支持SQL語言,用來存儲大量的數據,並且能夠對數據進行使用、更新、維護等操作。

(5)Network:通過網路來存儲和獲取數據。

本篇博文介紹第四種方式,通過Android自帶的SQLite資料庫存儲數據。

1.SQLite簡介

SQLite是一款開源的、嵌入式關系型資料庫,第一個版本Alpha發布於2000年。SQLite在便攜性、易用性、緊湊性、高效性和可靠性方面有著突出的表現。

SQLite和C/S模式的資料庫軟體不同,它是一款嵌入式資料庫,沒有獨立運行的進程,與所服務的應用程序在應用程序進程空間內共生共存。它的代碼與應用程序代碼也是在一起的,或者說嵌入其中,作為託管它的程序的一部分。因此不存在資料庫的客戶端和伺服器,使用SQLite一般只需要帶上它的一個動態庫,就可以享受它的全部功能。

資料庫伺服器在程序中的好處是不需要網路配置或管理。將資料庫客戶端與伺服器運行在同一個進程中,可以省去不少的操作及麻煩:不用擔心防火牆或者地址解析;不用浪費時間管理復雜的授權和許可權;可以減少網路調用相關的消耗;可以簡化資料庫管理並使程序更容易部署。

SQLite資料庫通過資料庫級上的獨占性和共享鎖來實現獨立事務處理。這意味著多個進程可以在同一時間從同一資料庫讀取數據,但是只有一個可以寫入數據。在某個進程向資料庫執行寫操作之前,必須獲得獨占鎖定。在發出獨占鎖定後,其他的讀寫操作將不會再發生。

此外,SQLite資料庫中的所有信息(比如表、視圖、觸發器等)都包含在一個文件內,方便管理和維護。SQLite資料庫還支持大部分操作系統,除電腦上使用的操作系統之外,很多手機上使用的操作系統同樣可以運行。同時,SQLite資料庫還提供了多語言的編程介面,供開發者使用。

2.SQL基本命令

SQL是與關系型資料庫通信的唯一方式。它專注於信息處理,是為構建、讀取、寫入、排序、過濾、映射、分組、聚集和通常的管理信息而設計的聲明式語言。

在講解SQL基本命令之前,有必要先了解一下SQLite所支持的數據類型都有哪些。

2.1 SQLite支持的數據類型

SQLite採用動態數據存儲類型,會根據存入的值自動進行判斷。SQLite支持以下5種數據類型:

(1)NULL:空值

(2)INTEGER:帶符號的整型

(3)REAL:浮點型

(4)TEXT:字元串文本

(5)BLOB:二進制對象

2.2 SQL基本命令

表是探索SQLite中SQL的起點,也是關系型資料庫中信息的標准單位,所有的操作都是以表為中心的。那麼如何使用SQL命令創建一張表呢?

2.2.1創建表

表是由行和列組成的,列稱為欄位,行稱為記錄。

使用CREATE命令可以創建表,CREATE命令的一般格式為:

CREATE [TEMP/TEMPORARY] TABLE table_name (column_definitions [, constraints]);

其中,[]中的內容是可選的,用TEMP或TEMPORARY關鍵字聲明的表是臨時表,這種表只存活於當前會話,一旦連接斷開,就會被自動銷毀。如果沒有明確指出創建的表是臨時表,則創建的是基本表,將會在資料庫中持久存在,這也是資料庫中最常見的表。

CREATE TABLE命令至少需要一個表名和一個欄位名,上述命令中的table_name表示表名,表名必須與其他標識符不同。column_definitions由用逗號分隔的欄位列表組成,每個欄位定義包括一個名稱、一個域(類型)和一個逗號分隔的欄位約束。其中,域是指存儲在該列的信息的類型,約束用來控制什麼樣的值可以存儲在表中或特定的欄位中。

一條創建表的命令示例如下:

1 CREATE TABLE tab_student (studentId INTEGER PRIMARY KEY AUTOINCREMENT,
2 studentName VARCHAR(20),
3 studentAge INTEGER);

如上,我們創建了一個名為tab_student的表,該表包含3個欄位:studentId、 studentName和studentAge,其數據類型分別為:INTEGER、VARCHAR和INTEGER。

此外,通過使用關鍵字PRIMARY KEY,我們指定了欄位studentId所在的列是主鍵。主鍵確保了每一行記錄在某種方式上與表中的其他行記錄是不同的(唯一的),進而確保了表中的所有欄位都是可定址的。

SQLite為主鍵提供自增長功能,當定義欄位類型為INTEGER PRIMARY KEY時,SQLite將為該欄位創建默認值,該默認值確保整數值是唯一的。SQLite使用64-bit單符號整數主鍵,因此,該欄位的最大值是9,223,372,036,854,775,807。當達到最大值時,SQLite會自動搜索該欄位還未使用的值,並作為要插入的值。從表中刪除記錄時,rowid可能被回收並在後面的插入中使用。因此,新創建的rowid不一定是按照嚴格順序增長的。如果想要SQLite使用唯一的自動主鍵值,而不是填補空白,可以在主鍵定義INTEGER PRIMARY KEY中加入關鍵字AUTOINCREMENT。AUTOINCREMENT關鍵字阻止rowid回收,它將為新插入的記錄產生新的(不是回收的)rowid。

2.2.2插入記錄

使用INSERT命令可以一次插入一條記錄,INSERT命令的一般格式為:

INSERT INTO tab_name (column_list) VALUES (value_list);

其中,tab_name指明將數據插入到哪個表中,column_list是用逗號分隔的欄位名稱,這些欄位必須是表中存在的,value_list是用逗號分隔的值列表,這些值是與column_list中的欄位一一對應的。

比如,向剛才創建的tab_student表中插入一條記錄,便可以使用如下的語句完成:

INSERT INTO tab_student (studentId, studentName, studentAge) VALUES (1, 「jack」, 23);

通過以上的語句,便插入了一條studentName=」jack」, studentAge=」23」的記錄,該記錄的主鍵為studentId=1。

2.2.3更新記錄

使用UPDATE命令可以更新表中的記錄,該命令可以修改一個表中一行或者多行中的一個或多個欄位。UPDATE命令的一般格式為:

UPDATE tab_name SET update_list WHERE predicate;

其中,update_list是一個或多個欄位賦值的列表,欄位賦值的格式為column_name=value。WHERE子句使用斷言識別要修改的行,然後將更新列應用到這些行。

比如,要更新剛才插入到tab_student表中的記錄,便可以使用如下的語句完成:

UPDATE tab_student SET studentName=」tom」, studentAge=」25」 WHERE studentId=1;

通過以上的語句,便可以將剛才插入的主鍵為studentId=1的記錄更新為studentName=」tom」, studentAge=」25」了。

2.2.4刪除記錄

使用DELETE命令可以刪除表中的記錄,DELETE命令的一般格式為:

DELETE FROM table_name WHERE predicate;

其中,table_name指明所要刪除的記錄位於哪個表中。和UPDATE命令一樣,WHERE子句使用斷言識別要刪除的行。

比如,要刪除剛才插入的記錄,便可以使用如下的語句完成:


DELETE FROM tab_student WHERE studentId=1;

2.2.5查詢記錄

SELECT命令是查詢資料庫的唯一命令。SELECT命令也是SQL命令中最大、最復雜的命令。

SELECT命令的通用形式如下:

SELECT [distinct] heading

FROM tables

WHERE predicate

GROUP BY columns

HAVING predicate

ORDER BY columns

LIMIT count,offset;

其中,每個關鍵字(如FROM、WHERE、HAVING等)都是一個單獨的子句,每個子句由關鍵字和跟隨的參數構成。GROUP BY和HAVING一起工作可以對GROUP BY進行約束。ORDER BY使記錄集在返回之前按一個或多個欄位的值進行排序,可以指定排序方式為ASC(默認的升序)或DESC(降序)。此外,還可以使用LIMIT限定結果集的大小和范圍,count指定返回記錄的最大數量,offset指定偏移的記錄數。

在上述的SELECT命令通用形式中,除了SELECT之外,所有的子句都是可選的。目前最常用的SELECT命令由三個子句組成:SELECT、FROM、WHERE,其基本語法形式如下:

SELECT heading FROM tables WHERE predicate;

比如,要查詢剛才插入的記錄,便可以使用如下的語句完成:


SELECT studentId, studentName, studentAge FROM tab_student WHERE studentId=1;

至此,我們介紹了SQL中最基本和最常用的CREATE、INSERT、UPDATE、DELETE和SELECT命令。當然了,這里只是對其進行了簡單的介紹,有關SQLite中SQL命令的詳細使用方法,可以參閱《SQLite權威指南》一書的第三章和第四章。

3.資料庫操作輔助類SQLiteOpenHelper

Android提供了一個重要的類SQLiteOpenHelper,用於輔助用戶對SQLite資料庫進行操作。

SQLiteOpenHelper的構造函數原型如下:

public SQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version);

其中,參數context表示應用程序運行的環境,包含應用程序所需的共享資源。參數name表示Android的資料庫名字。參數factory是SQLiteDatabase.CursorFactory類對象,用於存儲查詢Android SQLite資料庫的結果集。參數version表示應用程序所用的資料庫的版本,該版本並非SQLite的真正版本,而是指定應用程序中的SQLite資料庫的版本,當該版本號發生變化時,將會觸發SQLiteOpenHelper類中的onUpgrade()或onDowngrade()方法。

SQLiteOpenHelper類的所有方法如圖1所示。

圖1 SQLiteOpenHelper類的方法

其中,close()方法用於關閉SQLiteOpenHelper對象中的SQLite資料庫;getReadableDatabase()方法和getWriteableDatabase()方法類似,getReadableDatabase()方法以只讀狀態打開SQLiteOpenHelper對象中指定的SQLite資料庫,任何想要修改資料庫的操作都是不允許的;getWriteableDatabase()方法也是打開資料庫,但是允許資料庫正常的讀/寫操作;在一個不存在的資料庫上調用任何方法時,都會隱式的調用SQLiteOpenHelper對象的onCreate()方法;當應用程序第一次訪問資料庫時,則會調用onOpen()方法,但是,如果版本號發生了變化的話,則會調用onUpgrade()或onDowngrade()方法。

4.資料庫類SQLiteDatabase

SQLiteDatabase類用來完成對資料庫的操作任務,比如表的選擇、插入、更新和刪除語句等。

SQLiteDatabase類中常用的用於執行SQL語句的方法有以下一些。

(1)execSQL()方法:

public void execSQL (String sql);

public void execSQL (String sql, Object[] bindArgs);

(2)query()方法:

public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String
groupBy, String having,String orderBy, String limit);

public Cursor query (boolean distinct, String table, String[] columns, String selection, String[] selectionArgs, String
groupBy, String having, String orderBy, String limit, CancellationSignal cancellationSignal);

public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String
having,String orderBy);

public Cursor query (boolean distinct, String table, String[] columns, String selection, String[] selectionArgs, String
groupBy, String having, String orderBy, String limit);

(3)queryWithFactory()方法:

public Cursor queryWithFactory (SQLiteDatabase.CursorFactory cursorFactory, boolean distinct, String table, String[]columns, String selection, String[] selectionArgs, String groupBy, String having, String
orderBy, String limit,CancellationSignal cancellationSignal);

public Cursor queryWithFactory (SQLiteDatabase.CursorFactory cursorFactory, boolean distinct, String table, String[]columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit);

(4)rawQuery()方法:

public Cursor rawQuery (String sql, String[] selectionArgs, CancellationSignal cancellationSignal);

public Cursor rawQuery (String sql, String[] selectionArgs);

(5)rawQueryWithFactory()方法:

public Cursor rawQueryWithFactory (SQLiteDatabase.CursorFactory cursorFactory, String sql, String[]
selectionArgs,String editTable);

public Cursor rawQueryWithFactory (SQLiteDatabase.CursorFactory cursorFactory, String sql, String[]
selectionArgs,String editTable, CancellationSignal cancellationSignal);

其中,execSQL()方法都有一個參數sql,這個參數是一個SQL語句。第二個參數bindArgs接收一個數組,數組中的每個成員捆綁了一個查詢。execSQL()方法用於運行那些沒有返回值的查詢語句,比如創建、插入、更新和修改表。

query()方法和queryWithFactory()方法是在資料庫中運行一些輕量級的單查詢語句,參數包括table、columns、groupBy、having、orderBy、limit等SQL語句關鍵字。這些方法允許將SQL語句傳遞給相關方法,而不必直接使用SQL語句。

rawQuery()方法和rawQueryWithFactory()方法也都有一個參數sql,用於執行SQL查詢語句,返回值是Cursor對象。這兩個方法都有一個版本能夠接收一個字元串數組selectionArgs作為參數,通過這個參數,SQLiteDatabase對象將把捆綁的SQL語句中的問號(?)用這個數組中的值代替,並按照一一對應的位置關系進行取代。

SQLiteDatabase類提供了大約50個方法,除此之外還有一些用於打開資料庫的方法(如openDatabase()、openOrCreateDatabase()等),用於管理SQLite事務的方法(如beginTransaction()、endTransaction()等),用於測試資料庫是否被鎖住的方法(如isDbLockedByCurrentThread()、isDbLockedByOtherThread()等),以及獲取資料庫基本信息的方法(如getMaximumSiza()、getVersion()等)。這里就不一一介紹了,具體可以參閱SQLiteDatabase類的API幫助文檔。

5.游標類Cursor

在Android中,查詢數據是通過Cursor類來實現的,當我們使用SQLiteDatabase.query()或SQLiteDatabase.rawQuery()方法時,會得到一個Cursor對象,Cursor指向的就是每一條記錄,它提供了很多有關查詢的方法,如圖2所示。
http://www.cnblogs.com/menlsh/archive/2013/04/13/3019588.html