sqlite讀取資料庫文件
A. 安卓中怎麼讀取sqlite的db文件的數據
安裝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管理工具了。
如下圖:
8
使用sqlite管理資料庫:
sqlite命令行工具默認是以;結束語句的。所以如果只是一行語句,要在末尾加;,或者在下一行中鍵入;,這樣sqlite命令才會被執行。
sqlite常用命令:
.tables--查看資料庫的表列表
.exit--退出sqlite命令行
其他命令可隨時.help查看幫助。sql命令可直接在此命令行上執行即可:
B. 如何讀取sqllite資料庫
1、添加右鍵引用NUGet包 安裝VICI CoolStorage
2、此時可以看到引用中多兩個文件Vici.CoolStorage.WP8 和Vici.Core.WP8
3、
public class SQLite
{
private static SQLite _instance;
public static SQLite getInstance()
{
if (_instance == null)
_instance = new SQLite();
return _instance;
}
public SQLite()
{
}
///// <summary>
///// 通過!iStorage.FileExists(fn)保證 程序第一次
///// 運行的時候才會將資料庫復制
///// 到隔離存儲空間中,
///// fn為復制的資料庫路徑及名稱
///// </summary>
///// <param name="fn"></param>
//private void move(string fn)
//{
// //StreamResourceInfo sr = Application.GetResourceStream(new Uri(fn, UriKind.Relative));
// IsolatedStorageFile iStorage = IsolatedStorageFile.GetUserStoreForApplication();
// if (!iStorage.FileExists(fn))
// {
// using (var outputStream = iStorage.OpenFile(fn, System.IO.FileMode.CreateNew))
// {
// byte[] buffer = new byte[10000];
// for (; ; )
// {
// int read = sr.Stream.Read(buffer, 0, buffer.Length);
// if (read <= 0)
// break;
// outputStream.Write(buffer, 0, read);
// }
// }
// }
//}
/// <summary>
/// 將文件存儲到獨立存儲空間
/// </summary>
/// <param name="assemblyName">項目名</param>
/// <param name="dbName">文件名</param>
private void CopyFromContentToStorage(string assemblyName, String dbName)
{
IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication();
System.IO.Stream src = Application.GetResourceStream(new Uri("/" + assemblyName + ";component/DataBase/" + dbName, UriKind.Relative)).Stream;
IsolatedStorageFileStream dest = new IsolatedStorageFileStream(dbName, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write, store);
src.Position = 0;
CopyStream(src, dest);
dest.Flush();
dest.Close();
src.Close();
dest.Dispose();
}
/// <summary>
/// 復制流
/// </summary>
/// <param name="input"></param>
/// <param name="output"></param>
private static void CopyStream(System.IO.Stream input, IsolatedStorageFileStream output)
{
byte[] buffer = new byte[32768];
long TempPos = input.Position;
int readCount;
do
{
readCount = input.Read(buffer, 0, buffer.Length);
if (readCount > 0)
{
output.Write(buffer, 0, readCount);
}
} while (readCount > 0);
input.Position = TempPos;
}
/// <summary>
/// 查詢區域信息表中的所有數據信息
/// </summary>
/// <param name="sTableName">表名稱</param>
/// <param name="sWhere">查詢條件</param>
/// <param name="sOrder"></param>
/// <returns></returns>
public CSGenericRecordList queryAllData(String sSelect, String sTableName, String sWhere, String sOrder)
{
string strSql = string.Empty;
strSql += "SELECT " +sSelect+" FROM " + sTableName;
if (!sWhere.Equals(""))
{
strSql = strSql + " WHERE " + sWhere;
}
if (!sOrder.Equals(""))
{
strSql=strSql+" ORDER BY "+sOrder;
}
//move(fn);
CopyFromContentToStorage("PingAn_WP", "FinancialTel.db");
//設置使用的資料庫
CSConfig.SetDB("FinancialTel.db");
CSGenericRecordList arealist = CSDatabase.RunQuery(strSql);
return arealist;
}
}
4、 調用
protected override void OnNavigatedTo(NavigationEventArgs e)
{
SQLite sqlLite = new SQLite();
CSGenericRecordList cslis = sqlLite.queryAllData("distinct level2,tel", "pingan", "level3=''", "sort");
lb_Main.ItemsSource = from cs in cslis select new PingAn_Model(cs["level2"].ToString(), cs["tel"].ToString());
//PingAn_Model是一個對象
base.OnNavigatedTo(e);
}
C. sqlite 的資料庫文件在什麼地方
(內存的/data/data/<package name/databases>目錄中
要在Android系統中操作SQLite資料庫,是通過Android的核心類SQLiteDatabase類來實現的,通常情況下為了資料庫升級的需要以及使用方便,我們會選擇繼承SQLiteOpenHelper抽像類,但是SQLiteOpenHelper會將資料庫文件創建在一個固定的目錄,如果你想使用已經存在的資料庫文件也就是說資料庫會和程序一起發布,就得通過使用SQLiteDabase的靜態方法OpenOrCreateDatabase()方法來得到SQLiteDabase對象,
下面是一個具體操作類:
package net.my.;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import net.my.jokebook.R;
import android.app.Activity;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
public class DBHelper {
//得到SD卡路徑
private final String DATABASE_PATH = android.os.Environment
.getExternalStorageDirectory().getAbsolutePath()
+ "/joke";
private final Activity activity;
//資料庫名
private final String DATABASE_FILENAME;
public DBHelper(Context context) {
// TODO Auto-generated constructor stub
//這里直接給資料庫名
DATABASE_FILENAME = "jokebook.db3";
activity = (Activity)context;
}
//得到操作資料庫的對象
publicSQLiteDatabase openDatabase()
{
try
{
boolean b = false;
//得到資料庫的完整路徑名
String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME;
//將資料庫文件從資源文件放到合適地方(資源文件也就是資料庫文件放在項目的res下的raw目錄中)
//將資料庫文件復制到SD卡中 File dir = new File(DATABASE_PATH);
if (!dir.exists())
b = dir.mkdir();
//判斷是否存在該文件
if (!(new File(databaseFilename)).exists())
{
//不存在得到資料庫輸入流對象
InputStream is = activity.getResources().openRawResource(
R.raw.jokebook);
//創建輸出流
FileOutputStream fos = new FileOutputStream(databaseFilename);
//將數據輸出
byte[] buffer = new byte[8192];
int count = 0;
while ((count = is.read(buffer)) > 0)
{
fos.write(buffer, 0, count);
}
//關閉資源
fos.close();
is.close();
}
//得到SQLDatabase對象
SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(
databaseFilename, null);
return database;
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
return null;
}
}
寫完這個類之後,就能得到SQLiteDatabase對象,就能對資料庫操作了
D. sqlite怎麼連接資料庫文件
sorry, 沒安裝"sqlite developer".
若只是想導出sqlite資料庫中的表數據可以很簡單地用sqlite命令:
tim@ubtim:~/workspace$ sqlite3
SQLite version 3.7.7 2011-06-23 19:49:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> create table tb_test (field int, val varchar(3));
sqlite> insert into tb_test values (1, 'a');
sqlite> insert into tb_test values (2, 'b');
sqlite> insert into tb_test values (3, 'c');
sqlite> .mode csv
sqlite> .output tb_test.csv
sqlite> select * from tb_test;
sqlite> .q
tim@ubtim:~/workspace$ cat tb_test.csv
1,a
2,b
3,c
tim@ubtim:~/workspace$
E. 如何用Java讀寫SQLite資料庫文件,在Windows環境
首先需要這個包,添加到工程。
下面給你示例代碼
importjava.sql.*;
publicclassSQLiteDemo{
publicstaticvoidmain(String[]args){
try{
//連接SQLite的JDBC
Class.forName("org.sqlite.JDBC");
//建立一個資料庫名data.db的連接,如果不存在就在當前目錄下創建之
Connectionconn=DriverManager.getConnection("jdbc:sqlite:data.db");
conn.setAutoCommit(false);
Statementstat=conn.createStatement();
stat.executeUpdate("createtableifnotexiststbl1(namevarchar(20),salaryint);");//創建一個表,兩列
stat.executeUpdate("insertintotbl1values('ZhangSan',8000);");//插入數據
stat.executeUpdate("insertintotbl1values('LiSi',7800);");
stat.executeUpdate("insertintotbl1values('WangWu',5800);");
stat.executeUpdate("insertintotbl1values('ZhaoLiu',9100);");
ResultSetrs=stat.executeQuery("select*fromtbl1;");//查詢數據
while(rs.next()){//將查詢到的數據列印出來
System.out.print("name="+rs.getString("name")+"");//列屬性一
System.out.println("salary="+rs.getString("salary"));//列屬性二
}
rs.close();
conn.commit();
conn.close();//結束資料庫的連接
}
catch(Exceptione)
{
e.printStackTrace();
}
}
}
F. sqlite資料庫文件 電腦怎麼打開
單的復說,一個文件就是一個數制據庫。文件名就是資料庫名稱。所以,你可以自己先創建資料庫和表,插入數據等等,都是以一個文件形式存放的。之後,你的項目,就可以直接做查詢就可以了。如果項目期間不需要修改數據的話。 用eclipse開發時,android模擬器打開後,可以在android設備相應的data/db類似文件夾里查看該資料庫文件,以.db為後綴的文件
G. php中如何讀取sqlite資料庫文件的數據
//sqlite2:
$db_name = 'test.db';
$conn = new SQLiteDatabase($db_name);
//$conn->Query( "CREATE TABLE test ( id INTEGER NOT NULL PRIMARY KEY , title VARCHAR ( 25 ) NOT NULL , content VARCHAR ( 50 ) NOT NULL )" );
//$conn->Query( "INSERT INTO test (title, content) VALUES ('caisangzi','raytang')" );
$sql = 'select * from test';
$result = $conn->arrayQuery($sql);
var_mp($result);
//sqlite3:
$db_name = 'sqlite3.db';
$conn = new sqlite3($db_name);
$sql = 'select * from ``';
$result = $conn->query($sql)->fetcharray();
var_mp($result);
注意:似乎sqlite2模塊不支持`這個特義標記
H. sqlite的資料庫文件放在程序哪裡
要在Android系統中操作SQLite資料庫,是通過Android的核心類SQLiteDatabase類來實現的,通常情況下為了資料庫升級的需要以及使用方便,我們會選擇繼承SQLiteOpenHelper抽像類,但是SQLiteOpenHelper會將資料庫文件創建在一個固定的目錄(內存的/data/data/<package name/databases>目錄中),如果你想使用已經存在的資料庫文件也就是說資料庫會和程序一起發布,就得通過使用SQLiteDabase的靜態方法OpenOrCreateDatabase()方法來得到SQLiteDabase對象,下面是一個具體操作類:
package net.my.;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import net.my.jokebook.R;
import android.app.Activity;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
public class DBHelper {
//得到SD卡路徑
private final String DATABASE_PATH = android.os.Environment
.getExternalStorageDirectory().getAbsolutePath()
+ "/joke";
private final Activity activity;
//資料庫名
private final String DATABASE_FILENAME;
public DBHelper(Context context) {
// TODO Auto-generated constructor stub
//這里直接給資料庫名
DATABASE_FILENAME = "jokebook.db3";
activity = (Activity)context;
}
//得到操作資料庫的對象
public SQLiteDatabase openDatabase()
{
try
{
boolean b = false;
//得到資料庫的完整路徑名
String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME;
//將資料庫文件從資源文件放到合適地方(資源文件也就是資料庫文件放在項目的res下的raw目錄中)
//將資料庫文件復制到SD卡中 File dir = new File(DATABASE_PATH);
if (!dir.exists())
b = dir.mkdir();
//判斷是否存在該文件
if (!(new File(databaseFilename)).exists())
{
//不存在得到資料庫輸入流對象
InputStream is = activity.getResources().openRawResource(
R.raw.jokebook);
//創建輸出流
FileOutputStream fos = new FileOutputStream(databaseFilename);
//將數據輸出
byte[] buffer = new byte[8192];
int count = 0;
while ((count = is.read(buffer)) > 0)
{
fos.write(buffer, 0, count);
}
//關閉資源
fos.close();
is.close();
}
//得到SQLDatabase對象
SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(
databaseFilename, null);
return database;
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
return null;
}
}
寫完這個類之後,就能得到SQLiteDatabase對象,就能對資料庫操作了
I. 如何讀取 sqlite3 sqlite3
sqlite是一個嵌入式的SQL資料庫引擎,只用一個文件就ok,小巧方便,所以是一個非常不錯的嵌入式資料庫,在Mozilla Firefox使用SQLite作為資料庫。
例如:存放cookies的文件就是一個SQLite的資料庫文件,一般存在於 ~/.mozilla/firefox/cojs83dh.default目錄下,那麼如何進行查看呢?
可使用vim打開文件,查看到使用的格式是sqlite3,而在GNU Linux下有一個命令可以對其進行查看:sqlite3,以下就是具體的使用步驟:
0、使用命令對此資料庫進行打開:
$ sqlite3 cookies.sqlite
進行入sqlite3命令行模式;
1、查看此文件中的資料庫的名稱:
sqlite> .databases
seq name file
--- --------------- ----------------------------------------------------------
0 main /home/ufo/.mozilla/firefox/cojs83dh.default/cookies.sqlite
2、再查看此文件中已經存在數據表:
sqlite> .tables
moz_cookies
可看到此文件中包含一個表,名為moz_cookies;
3、查看此表中的欄位名稱:
sqlite> .schema moz_cookies
CREATE TABLE moz_cookies (id INTEGER PRIMARY KEY, baseDomain TEXT, appId INTEGER DEFAULT 0, inBrowserElement INTEGER DEFAULT 0, name TEXT, value TEXT, host TEXT, path TEXT, expiry INTEGER, lastAccessed INTEGER, creationTime INTEGER, isSecure INTEGER, isHttpOnly INTEGER, CONSTRAINT moz_uniqueid UNIQUE (name, host, path, appId, inBrowserElement));
CREATE INDEX moz_basedomain ON moz_cookies (baseDomain, appId, inBrowserElement);
4、顯示表內的數據條目:
sqlite> .mode line
以上這句表示輸出表項的顯示模式為每一個欄位一行的模式進行顯示;
以下語句將輸出類似於以下內容的表項條目:
sqlite> select * from moz_cookies;
id = 10
baseDomain = bing.com
appId = 0
inBrowserElement = 0
name = SRCHUID
value = V=2&GUID=
host = cn.bing.com
path = /
expiry = 1466758101
lastAccessed = 1404991858781769
creationTime = 1403686100491716
isSecure = 0
isHttpOnly = 0
id = 11
baseDomain = bing.com
appId = 0
inBrowserElement = 0
name = SRCHUSR
value = AUTOREDIR=0&GEOVAR=&DOB=20140624
host = .bing.com
path = /
expiry = 1466758101
lastAccessed = 1404991858781769
creationTime = 1403686100493026
isSecure = 0
isHttpOnly = 0