當前位置:首頁 » 數據倉庫 » sqlite資料庫管理工具如何使用
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sqlite資料庫管理工具如何使用

發布時間: 2022-04-28 12:07:36

⑴ 如何用sqlite3

sqlite的安裝
1. 首先是下載sqlite,可以該頁面下載:http://www.sqlite.org/download.html
當前的最新版本為:sqlite-shell-win32-x86-3070701.zip這個是windows下sqlite的命令行管理工具,用它可以管理sqlite資料庫文件

同時最好把文檔也下載下來,裡麵包含了詳細的sqlite的使用說明:sqlite-doc-3070701.zip

2.
sqlite無需任何配置和安裝,只要將下載下來的shell文件解壓到任何你覺得合適的地方,然後將其加入到path環境變數就可以了(加入path環
境變數是為了直接在命令行使用sqlite3,不加的話需要詳細的指定sqlite3的路徑,如d:/sqlite/sqlite3)。

3. 驗證一下是否安裝成功。

要想掌握一個軟體的使用,最好的方式是使用軟體自帶的幫助和文檔,而不是一直利用google。文檔和幫助一般包含了該軟體所有的用法,畢竟那是有軟體的開發者所寫的,他對軟體是最了解的。

首先來看一下sqlite的幫助:
win + r輸入cmd,進入命令行,並輸入sqlite3,進入sqlite的命令行管理工具。
然後輸入.help,則可以看到sqlite3的管理工具的所有用法了:

為了照顧e文不好的朋友,這里將所有的命令解釋一遍,並給出相應的示例:
首先創建一個資料庫test.db,並在該資料庫中創建一張表user

1.因為之前進入了sqlite3了,先用.quit退出sqlite
2.再用sqlite3 test.db載入或創建指定資料庫
3.然後用sql語句創建一個一張表user(關於sql語句,可以去看些sql入門的書籍,在sqlite文檔中也有對應的sql的介紹,不過
感覺那個不適合入門,因為畢竟很多資料庫的基本知識裡面都沒有講到)(同時還需要注意的是sqlite是可以不指定列的類型的,這也是sqlite的一個
特色,它的列類型是動態的)
4.然後又用到了一個顯示當前資料庫中存在的數據表的命令.tables(.help中倒數第三個)
5.最後向數據表中插入了一條數據(sql語句,不是.help中的命令)

接下來從上到下介紹所有命令的使用:
.backup ?DB? FILE
將資料庫文件備份到指定的文件中,默認(在不指定資料庫名時)會備份main資料庫)

備份生成的文件打開後

.l ON|OFF
設置在遇到錯誤時就停止sqlite工具的執行,默認時是OFF的。

.databases
列出(當前資料庫文件中)附加的所有資料庫的名字和文件

.mp ?TABLE1? ?TABLE2? ...
將資料庫列印為sql文本格式。如果?TABLE1?指定了,就只列印出名字中包含了TABLE1的數據表。

.echo ON|OFF
在顯示的結果前是否顯示輸入的命令
注意:這個是以column模式顯示了,後面會講到如何將顯示方式設置為column

.exit
不解釋,退出程序

.explain ?ON|OFF?
開啟或關閉適合於的輸出模式。不指定ON或OFF時,默認為ON。

.genfkey ?OPTIONS?
OPTIONS有如下幾個值:
--no-drop:不刪除舊的外鍵觸發器
--ignore-error:忽略表的外鍵錯誤
--exec:立即執行生成的sql語句
這個應該是設置在違反外鍵約束時,sqlite如何做。具體的沒嘗試。

.headers ON|OFF
是否顯示表頭
.mode MODE ?TABLE?
設置輸出模式,當?TABLE?指定時,就是該輸出模式只應該在該表的輸出上

.header on時的各輸出模式

.header off時的各輸出模式

.help
顯示幫助

.import FILE TABLE
讀取文件中的數據插入到指定表中
注意這里的分隔符.separator是\t,所以data.txt中是以tab分隔的,默認的是,(此時就是2,yuan2,2)

indices ?TABLE?
顯示指定表的所有索引。表沒指定時,顯示所有索引。

.load FILE ?ENTRY?
載入一個外部庫文件

.log FILE|off
開啟或關閉日誌功能。
關閉:.log off
開啟,並將日誌輸出到標准輸出流:.log stdout
開啟,並將日誌輸出到標准錯誤六:.log stderr
開啟,並將日誌輸出到指定文件:.log d:/sqlite3/log.txt

nullvalue STRING
值為NULL時,顯示的字元串。默認為""

.output FILENAME
將所有的輸出都輸出到指定文件

.output stdout
將所有的輸出都輸出到標准輸出流(默認就是),就是輸出到控制台上

.prompt MAIN CONTINUE
替換標準的提示。未嘗試

.quit
不解釋,同.exit,退出程序。

.read FILENAME
執行指定文件中的sql語句

.restore ?DB? FILE
從備份文件中還原資料庫。默認是還原main資料庫。

1. 首先我們先備份的main資料庫
2. 然後將數據刪除
3. 然後在還原main資料庫,看數據是否還原成功

.schema ?TABLE?
顯示指定表的創建語句。表未指定時,顯示所有表的創建語句。

因為之前創建了索引,所以包含索引創建語句。

.separator STRING
設置輸出模式.mode和導入數據.import的分隔符。

.show
顯示當前的設置。

.tables ?TABLE?
列出所有表名。

.timeout MS
只在指定的毫秒內嘗試打開鎖定的表,而不是一直嘗試打開。

.width NUM1 NUM2 ...
設置.mode column中每個列的寬度。每個列默認的寬度是10個字元,過長時會被截斷。

第一列設為1個字元,第二列設為0表示保持不變,第三類不設置也是保持不變

.timer ON|OFF
是否開啟cpu耗時度量。

⑵ android系統sqlite資料庫文件怎麼打開

工具/原料

SQLite Expert Professional
方法/步驟

安裝SQLite Expert Professional 可以在網上下載,我下載的是試用版,沒有找注冊碼,但是試用不影響使用,反正用幾次查看到資料庫操作沒有錯誤就不用這個工具了。當然也可以使用Eclipse插件DDMS來查看,也可以使用Android工具包中的adb工具來查看。android項目中的sqlite資料庫位於/data/data/項目包/databases中。先介紹使用DDMS導出sqlite資料庫的操作和使用adb工具訪問sqlite資料庫。
首先打開android項目的調試模式,然後找到顯示DDMS

切換到DDMS,顯示File Explorer窗口,找到/data/data/ 如下圖1 ,
然後找到程序包的文件夾,打開databases,就能看到sqlite資料庫文件了。選擇將其導出。如下圖2.
這樣就把sqlite資料庫文件以文件的方式導出來了,然後使用sqlite界面管理工具如SQLite Expert Professional可以打開該資料庫了。其他 sqlite界面管理工具如sqlite administrator、sqlite man或者firefox插件sqlite manager也可以打開該資料庫。

使用adb工具訪問sqlite資料庫
Android Debug Bridge(ADB)是Android的一個通用調試工具,它可以更新設備或模擬器中的代碼,可以管理預定埠,可以在設備上運行shell命令,我們 知道android是基於Linux內核,它的內部文件結構也是採用linux文件組織方式,因此訪問它的文件結構需要使用shell。這次我們就會用 shell來訪問android應用中的sqlite資料庫文件。
1、運行cmd,切換到android-sdk目錄,運行adb.exe,加上參數shell,出現#號就代表進入了shell命令模式,注意adb要在Android模擬器運行時才能進入shell:如下圖

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

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

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

使用sqlite管理資料庫:
sqlite命令行工具默認是以;結束語句的。所以如果只是一行語句,要在末尾加;,或者在下一行中鍵入;,這樣sqlite命令才會被執行。
sqlite常用命令:
.tables--查看資料庫的表列表
.exit--退出sqlite命令行
其他命令可隨時.help查看幫助。sql命令可直接在此命令行上執行即可:
如下圖:

⑶ 開發SQLite資料庫有哪些常用的管理工具

然後找到自己用的程序包的文件夾,打開databases,就看到sqlite資料庫文件了,然後到處就可以了。步驟上面標注好了,1,2,3。這樣就把sqlite資料庫文件以文件的方式導出來了,然後使用sqlite界面管理工具如sqlite
administrator、sqlite
man或者firefox插件sqlite
manager等打開就可以了。

⑷ 如何使用sqlite 資料庫文件

在我幾個Android應用中,我需要訪問已有的資料庫。這些資料庫往往很大,甚至超過asset文件大約1兆位元組的限制。而且在新的版本中資料庫需要更新。我在網上,特別是StackOverflow看了一些文章,並做了一些試驗,覺得下面的代碼能基本上滿足我的需求。

其主要思路是:

1. 把資料庫分解成幾個asset文件。

2. 當需要打開資料庫時,如果資料庫不存在,就把那幾個asset文件重新合並成一個資料庫文件。

3. 如果資料庫的版本改變了,就在onUpgrade()方法中把資料庫文件刪除掉。下面是代碼://資料庫的預設路徑

private static finalString DB_PATH = "/data/data/com.mypackage.myapp/databases/";

private static finalString DB_NAME = "mydb.db";

private static finalint DB_VERSION = 2;

private static finalString DB_SPLIT_NAME = "mydb.db.00";

private static finalint DB_SPLIT_COUNT = 3;

private SQLiteDatabasem_database;

private final Contextm_context;

/**

* Constructor

*保存傳進來的context參數以用來訪問應用的asset和資源文件。

* @param context

*/

public MyDB(Contextcontext) {

super(context, DB_NAME, null, DB_VERSION);

this.m_context = context;

}

public static MyDBopenDatabaseReadOnly(Context context) {

MyDB db = new MyDB(context);try {

db.createDataBase();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}db.openDataBase(SQLiteDatabase.OPEN_READONLY);

return db;

}

public static MyDBopenDatabaseReadWrite(Context context) {

MyDB db = new MyDB(context);try {

db.createDataBase();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}db.openDataBase(SQLiteDatabase.OPEN_READWRITE);

return db;

}

/**

*創建一個空資料庫,用來存儲你已有的資料庫。

*/

public voidcreateDataBase() throws IOException{

boolean dbExist =checkDataBase();

if (dbExist) {

/*

**如果你的資料庫的版本改變了,調用這個方法確保在onUpgrade()被調用時

**傳進去的是可寫的資料庫。

*/

SQLiteDatabase db =this.getWritableDatabase();if (db != null) {

db.close();

}

}dbExist = checkDataBase();if (!dbExist) {

⑸ 怎麼使用SQLiteStudio來管理Sqlite資料庫

下載sqliteStudio,解壓,如圖,打開sqliteStudio.exe
即可使用
打開,如圖
新建資料庫,點擊database-add
database
輸入資料庫名,點擊OK
點擊數據名,在Table
右擊,然後create
a
table
設置資料庫的如圖所示,大家可以詳細的了解了。

⑹ 如何設置sqlite

您好!很高興為你解答此類問題,具體方法請看以下:
1.SQLite簡介

SQLite是一款輕型的資料庫,是遵守ACID的關聯式資料庫管理系統,它的設計目標是嵌入 式的,而且目前已經在很多嵌入式產品中使用了它,它佔用資源非常的低,在嵌入式設備中,可能只需要幾百K的內存就夠了。

它能夠支持 Windows/Linux/Unix等等主流的操作系統,同時能夠跟很多程序語言相結合,比如Tcl、PHP、Java、C++、.Net等,還有ODBC介面,同樣比起 Mysql、PostgreSQL這兩款開源世界著名的資料庫管理系統來講,它的處理速度比他們都快。

2.SQLite的特點:

輕量級
SQLite和C/S模式的資料庫軟體不同,它是進程內的資料庫引擎,因此不存在資料庫的客戶端和伺服器。使用SQLite一般只需要帶上它的一個動態 庫,就可以享受它的全部功能。

而且那個動態庫的尺寸也挺小,以版本3.6.11為例,Windows下487KB、Linux下347KB。

不需要"安裝"
SQLite的核心引擎本身不依賴第三方的軟體,使用它也不需要"安裝"。有點類似那種綠色軟體。

單一文件
資料庫中所有的信息(比如表、視圖等)都包含在一個文件內。這個文件可以自由復制到其它目錄或其它機器上。

跨平台/可移植性
除了主流操作系統 windows,linux之後,SQLite還支持其它一些不常用的操作系統。

弱類型的欄位
同一列中的數據可以是不同類型

開源

3.SQLite數據類型

一般數據採用的固定的靜態數據類型,而SQLite採用的是動態數據類型,會根據存入值自動判斷。SQLite具有以下五種常用的數據類型:

NULL: 這個值為空值
VARCHAR(n):長度不固定且其最大長度為 n 的字串,n不能超過 4000。
CHAR(n):長度固定為n的字串,n不能超過 254。
INTEGER: 值被標識為整數,依據值的大小可以依次被存儲為1,2,3,4,5,6,7,8.
REAL: 所有值都是浮動的數值,被存儲為8位元組的IEEE浮動標記序號.
TEXT: 值為文本字元串,使用資料庫編碼存儲(TUTF-8, UTF-16BE or UTF-16-LE).
BLOB: 值是BLOB數據塊,以輸入的數據格式進行存儲。如何輸入就如何存儲,不改 變格式。
DATA :包含了 年份、月份、日期。
TIME: 包含了 小時、分鍾、秒。

二.SQLiteDatabase的介紹

Android提供了創建和是用SQLite資料庫的API。SQLiteDatabase代表一個資料庫對象,提供了操作資料庫的一些方法。在Android的SDK目錄下有sqlite3工具,我們可以利用它創建資料庫、創建表和執行一些SQL語句。下面是SQLiteDatabase的常用方法。

SQLiteDatabase的常用方法

方法名稱
方法表示含義
openOrCreateDatabase(String path,SQLiteDatabase.CursorFactory factory)
打開或創建資料庫
insert(String table,String nullColumnHack,ContentValues values)
插入一條記錄
delete(String table,String whereClause,String[] whereArgs)
刪除一條記錄
query(String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy)
查詢一條記錄
update(String table,ContentValues values,String whereClause,String[] whereArgs)
修改記錄
execSQL(String sql)
執行一條SQL語句
close()
關閉資料庫

Google公司命名這些方法的名稱都是非常形象的。例如openOrCreateDatabase,我們從字面英文含義就能看出這是個打開或創建資料庫的方法

1、打開或者創建資料庫
在Android 中使用SQLiteDatabase的靜態方法openOrCreateDatabase(String path,SQLiteDatabae.CursorFactory factory)打開或者創建一個資料庫。
它會自動去檢測是否存在這個資料庫,如果存在則打開,不存在則創建一個資料庫;創建成功則返回一個SQLiteDatabase對象,否則拋出異常FileNotFoundException。

下面是創建名為「stu.db」資料庫的代碼:
openOrCreateDatabase(String path,SQLiteDatabae.CursorFactory factory)
參數1 資料庫創建的路徑
參數2 一般設置為null就可以了

eg: db=SQLiteDatabase.openOrCreateDatabase("/data/data/com.ling.db/databases/stu.db",null);
2、創建表
創建一張表的步驟很簡單:
編寫創建表的SQL語句
調用SQLiteDatabase的execSQL()方法來執行SQL語句

下面的代碼創建了一張用戶表,屬性列為:id(主鍵並且自動增加)、sname(學生姓名)、snumber(學號)
View Code
3、插入數據
ContentValues 是一種存儲的機制,常用於資料庫的操作。只能存儲基本類型。
插入數據有兩種方法:
①SQLiteDatabase的insert(String table,String nullColumnHack,ContentValues values)方法,
參數1 表名稱,
參數2 空列的默認值
參數3 ContentValues類型的一個封裝了列名稱和列值的Map;
View Code

②編寫插入數據的SQL語句,直接調用SQLiteDatabase的execSQL()方法來執行

View Code
4、刪除數據

刪除數據也有兩種方法:
①調用SQLiteDatabase的delete(String table,String whereClause,String[] whereArgs)方法
參數1 表名稱
參數2 刪除條件
參數3 刪除條件值數組
View Code

②編寫刪除SQL語句,調用SQLiteDatabase的execSQL()方法來執行刪除。

View Code

5、修改數據
修改數據有兩種方法:
①調用SQLiteDatabase的update(String table,ContentValues values,String whereClause, String[] whereArgs)方法
參數1 表名稱
參數2 跟行列ContentValues類型的鍵值對Key-Value
參數3 更新條件(where字句)
參數4 更新條件數組
View Code
②編寫更新的SQL語句,調用SQLiteDatabase的execSQL執行更新。

View Code
6、查詢數據

在Android中查詢數據是通過Cursor類來實現的,當我們使用SQLiteDatabase.query()方法時,會得到一個Cursor對象,Cursor指向的就是每一條數據。它提供了很多有關查詢的方法,具體方法如下:

public Cursor query(String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy,String limit);
各個參數的意義說明:
參數table:表名稱
參數columns:列名稱數組
參數selection:條件字句,相當於where
參數selectionArgs:條件字句,參數數組
參數groupBy:分組列
參數having:分組條件
參數orderBy:排序列
參數limit:分頁查詢限制
參數Cursor:返回值,相當於結果集ResultSet
Cursor是一個游標介面,提供了遍歷查詢結果的方法,如移動指針方法move(),獲得列值方法getString()等.
Cursor游標常用方法
方法名稱
方法描述
getCount()
獲得總的數據項數
isFirst()
判斷是否第一條記錄
isLast()
判斷是否最後一條記錄
moveToFirst()
移動到第一條記錄
moveToLast()
移動到最後一條記錄
move(int offset)
移動到指定記錄
moveToNext()
移動到下一條記錄
moveToPrevious()
移動到上一條記錄
getColumnIndexOrThrow(String columnName)
根據列名稱獲得列索引
getInt(int columnIndex)
獲得指定列索引的int類型值
getString(int columnIndex)
獲得指定列縮影的String類型值
下面就是用Cursor來查詢資料庫中的數據,具體代碼如下:
View Code

7、刪除指定表
編寫插入數據的SQL語句,直接調用SQLiteDatabase的execSQL()方法來執行
View Code

三. SQLiteOpenHelper
該類是SQLiteDatabase一個輔助類。這個類主要生成一 個資料庫,並對資料庫的版本進行管理。
當在程序當中調用這個類的方法getWritableDatabase()或者 getReadableDatabase()方法的時候,如果當時沒有數據,那麼Android系統就會自動生成一個資料庫。
SQLiteOpenHelper 是一個抽象類,我們通常需要繼承它,並且實現裡面的3個函數:

1.onCreate(SQLiteDatabase)
在資料庫第一次生成的時候會調用這個方法,也就是說,只有在創建資料庫的時候才會調用,當然也有一些其它的情況,一般我們在這個方法里邊生成資料庫表。

2. onUpgrade(SQLiteDatabase,int,int)
當資料庫需要升級的時候,Android系統會主動的調用這個方法。一般我們在這個方法里邊刪除數據表,並建立新的數據表,當然是否還需要做其他的操作,完全取決於應用的需求。

3. onOpen(SQLiteDatabase):
這是當打開資料庫時的回調函數,一般在程序中不是很常使用。

寫了這么多,改用用實際例子來說明上面的內容了。
下面這個操作資料庫的實例實現了創建資料庫,創建表以及資料庫的增刪改查的操作。
該實例有兩個類:
com.ling.testSQLite 調試類
com.ling.testSQLiteDb 資料庫輔助類

SQLiteActivity.java
View Code

StuDBHelper.java

View Code
main.xml
View Code

程序運行的效果圖:

使用adb命令查看資料庫:

1.在命令行窗口輸入adb shell回車,就進入了Linux命令行,現在就可以使用Linux的命令了。

2.ls回車,顯示所有的東西,其中有個data。

3.cd data回車,再ls回車,cd data回車,ls回車後就會看到很多的com................,那就是系統上的應用程序包名,找到你資料庫程序的包名,然後進入。

4.進去後在查看所有,會看到有databases,進入databases,顯示所有就會發現你的資料庫名字,這里使用的是"stu_db"。

5.sqlite3 stu_db回車就進入了你的資料庫了,然後「.schema」就會看到該應用程序的所有表及建表語句。

6.之後就可以使用標準的SQL語句查看剛才生成的資料庫及對數據執行增刪改查了。
註:ls,cd等命令都是linux的基本命令,不了解的同學可以看看有關這方面的資料。

下面介紹幾個在SQLite中常用到的adb命令:

查看
.database 顯示資料庫信息;
.tables 顯示表名稱;
.schema 命令可以查看創建數據表時的SQL命令;
.schema table_name 查看創建表table_name時的SQL的命令;

插入記錄
insert into table_name values (field1, field2, field3...);

查詢
select * from table_name;查看table_name表中所有記錄;
select * from table_name where field1='xxxxx'; 查詢符合指定條件的記錄;

刪除
drop table_name; 刪除表;
drop index_name; 刪除索引;
-------------------------------------------查詢,插入,刪除等操作資料庫的語句記得不要漏了;----------------------------------------

# sqlite3 stu_db
sqlite3 stu_db
SQLite version 3.6.22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .schema
.schema
CREATE TABLE android_metadata (locale TEXT);
CREATE TABLE stu_table(id int,sname varchar(20),sage int,ssex varchar(10)); --->創建的表
sqlite> select * from stu_table;
select * from stu_table;
1|xiaoming|21|male
sqlite>

插入數據

sqlite> insert into stu_table values(2,'xiaohong',20,'female');

插入的數據記得要和表中的屬性一一對應
insert into stu_table values(2,'xiaohong',20,'female');
sqlite> select * from stu_table;
select * from stu_table;
1|xiaoming|21|male
2|xiaohong|20|female --------------> 插入的數據
sqlite>
當點擊修改數據的按鈕時候

sqlite> select * from stu_table;

select * from stu_table;
1|xiaoming|23|male -------------->年齡被修改為23
2|xiaohong|20|female
sqlite>
當點擊刪除數據的按鈕

sqlite> select * from stu_table;

select * from stu_table;
1|xiaoming|23|male id=2的數據已經被刪除
總之,我們可以在代碼中執行資料庫的增刪改查,也可以在adb命令行下實現。不過因為SQLite沒有客戶端,不能直接的查看資料庫變化後的信息,所以常用adb命令行查看資料庫改變後的信息。

前面用到的資料庫,表都是自己在代碼中創建,下面介紹如何使用外部已有的資料庫的方法:
先用SQLite管理工具,sqliteadmin 具體操作很簡單,在這里我就不詳細介紹的了,但有一個地方時候很值得注意的,就是用sqliteadmin創建資料庫的時候,資料庫保存的路徑不能是中文路徑,中文路徑會出現下面的錯誤提示:
我在sqliteadmin 創建好資料庫StuDB,:

將創建好的資料庫在DDMS中點擊導入到data/data/程序的包名/

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

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

2 選擇DDMS

切換到DDMS,顯示File Explorer窗口,找到/data/data/

啰嗦一句,你可能在你自己的eclipse沒找到,File Explorer ,如果找不到的話,就去網上下載,"easyExplorer",放在eclipse的plugins目錄下:就OK了,重啟一下。

3 然後找到自己用的程序包的文件夾,打開databases,就看到sqlite資料庫文件了,然後到處就可以了。步驟上面標注好了,1,2,3。這樣就把sqlite資料庫文件以文件的方式導出來了,然後使用sqlite界面管理工具如sqlite administrator、sqlite man或者firefox插件sqlite manager等打開就可以了。

4 說一下另外一種方法,運行cmd,切換到android-sdk目錄,運行adb.exe,加上參數shell,出現#號就代表進入了shell命令模式,注意adb要在Android模擬器運行時才能進入shell:(必須要用root許可權,如果不是root許可權,去查詢別的資料,一般都是root許可權。OK了)

⑻ android sqlite資料庫怎麼使用

其主要思路是:

1. 把資料庫分解成幾個asset文件。

2. 當需要打開資料庫時,如果資料庫不存在,就把那幾個asset文件重新合並成一個資料庫文件。

3. 如果資料庫的版本改變了,就在onUpgrade()方法中把資料庫文件刪除掉。

下面是代碼:

//資料庫的預設路徑

private static finalString DB_PATH = "/data/data/com.mypackage.myapp/databases/";

private static finalString DB_NAME = "mydb.db";

private static finalint DB_VERSION = 2;

private static finalString DB_SPLIT_NAME = "mydb.db.00";

private static finalint DB_SPLIT_COUNT = 3;

private SQLiteDatabasem_database;

private final Contextm_context;

/**

* Constructor

*保存傳進來的context參數以用來訪問應用的asset和資源文件。

* @param context

*/

public MyDB(Contextcontext) {

super(context, DB_NAME, null, DB_VERSION);

this.m_context = context;

}

public static MyDBopenDatabaseReadOnly(Context context) {

MyDB db = new MyDB(context);

try {

db.createDataBase();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

db.openDataBase(SQLiteDatabase.OPEN_READONLY);

return db;

}

public static MyDBopenDatabaseReadWrite(Context context) {

MyDB db = new MyDB(context);

try {

db.createDataBase();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

db.openDataBase(SQLiteDatabase.OPEN_READWRITE);

return db;

}

/**

*創建一個空資料庫,用來存儲你已有的資料庫。

*/

public voidcreateDataBase() throws IOException{

boolean dbExist =checkDataBase();

if (dbExist) {

/*

**如果你的資料庫的版本改變了,調用這個方法確保在onUpgrade()被調用時

**傳進去的是可寫的資料庫。

*/

SQLiteDatabase db =this.getWritableDatabase();

if (db != null) {

db.close();

}

}

dbExist = checkDataBase();

if (!dbExist) {

try {

/*

** 調用這個方法以確保在預設路徑內產生一個空資料庫,以便在其基礎上復制我們已有的資料庫。

*/

SQLiteDatabase db =this.getReadableDatabase();

if (db != null) {

db.close();

}

DataBase();

}

catch (IOException e) {

Log.e("DB", e.getMessage());

throw new Error("Error ingdatabase");

}

}

}

/**

* 檢查資料庫是否已存在,以避免重復復制。

* @return true if it exists, false if itdoesn't

*/

private static booleancheckDataBase(){

SQLiteDatabase checkDB = null;

try {

String path = DB_PATH + DB_NAME;

checkDB =SQLiteDatabase.openDatabase(path, null, SQLiteDatabase.OPEN_READONLY);

}

catch (SQLiteException e){

//database does't exist yet.

}

if (checkDB != null) {

checkDB.close();

}

return checkDB != null ? true : false;

}

/**

* 把存在asset文件中的資料庫復制的剛創建的空資料庫中。

* */

private voidDataBase() throws IOException {

// 剛創建的空資料庫的路徑

String outFileName = DB_PATH + DB_NAME;

// 打開空資料庫

OutputStream output = new FileOutputStream(outFileName);

byte[] buffer = new byte[1024*8];

AssetManager assetMgr =m_context.getAssets();

for (int i = 1; i <= DB_SPLIT_COUNT; i++){

// 打開分解的asset文件

String fn = DB_SPLIT_NAME +String.valueOf(i);

InputStream input = assetMgr.open(fn);

//Log.i("DB", "opened" + fn);

int length;

while ((length = input.read(buffer)) >0) {

//Log.i("DB", "read" + String.valueOf(length));

output.write(buffer, 0, length);

//Log.i("DB", "write" + String.valueOf(length));

}

input.close();

}

//Close the streams

output.flush();

output.close();

}

/**

* 打開資料庫。

* */

private voidopenDataBase(int flags) throws SQLException{

//Open the database

String myPath = DB_PATH + DB_NAME;

m_database =SQLiteDatabase.openDatabase(myPath, null, flags);

}

/**

* 關閉資料庫。

* */

@Override

public synchronizedvoid close() {

if (m_database != null)

m_database.close();

super.close();

}

}

@Override

public voidonCreate(SQLiteDatabase db) {

// 不需做任何事

}

/**

* 在資料庫版本提高時,刪除原有資料庫。

* */

@Override

public voidonUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

if (newVersion > oldVersion) {

m_context.deleteDatabase(DB_NAME);

}

}

⑼ sqlite資料庫怎麼打開

1、打開程序後,可以看到程序左邊的「資料庫列表」。展開可以查看到所有打開過的資料庫。