sqlite資料庫使用
1、使用insert方法插入記錄
SQLiteDatabase的insert方法的簽名為long
insert(String
table,String
nullColumnHack,ContentValues
values),這個插入方法的參數說明如下:
table:代表想插入數據的表名。
nullColumnHack:代表強行插入null值的數據列的列名。
values:代表一行記錄的數據。
insert方法插入的一行記錄使用ContentValues存放,ContentValues類似於Map,它提供了put(String
key,Xxx
value)(其中key為數據列的列名)方法用於存入數據、getAsXxx(String
key)方法用於取出數據。
例如如下語句:
ContentValues
values=new
ContentValues();
values.put("name","孫悟空"):
values.put("age",500);
//返回新添記錄的行號,該行號是一個內部直,與主鍵id無關,發生錯誤返回-1
long
rowid=db.insert("person_inf",null,values);
2、使用update方法更新數據
SQLiteDatabase的update方法簽名為update(String
table,ContentValues
values,String
whereClause,String[]
whereArgs),這個更新方法的參數說明如下:
table:代表想要更新數據的表名。
values:代表想要更新的數據。
whereClause:滿足該whereClause子句的記錄將會被更新。
whereArgs:用於為whereArgs子句傳遞參數。
例如我們想要更新person_inf表中所有主鍵大於20的人的人名,可調用如下方法:
ContentValues
values=new
ContentValues();
//存放更新後的人名
values.put("name","新人名");
int
result=db.update("person_inf",values,"_id>?",new
Integer[]{20});
3、使用delete方法刪除記錄
SQLiteDatabase的delete方法簽名為delete(String
table,String
whereClause,String[]
whereArgs),這個刪除的參數說明如下:
table:代表想刪除數據的表名。
whereClause:滿足該whereClause子句的記錄將會被刪除。
whereArgs:用於為whereArgs子句傳入參數。
刪除person_inf表中所有人名以孫開頭的記錄
int
result=db.delete("person_inf","person_name
like
?",new
String[]{"孫_"});
4、使用query方法查詢記錄
SQLiteDatabase的query方法簽名為Cursor
query(boolean
distinct,String
table,String[]
columns,String
selection,String[]
selectionArgs,String
groupBy,String
having,String
orderBy,String
limit),這個query方法的參數說明如下。
distinct:指定是否去除重復記錄。
table:執行查詢數據的表名。
columns:要查詢出來的列名。
selection:查詢條件子句。
selectionArgs:用於為selection子句中佔位符傳入參數值,值在數組中的位置與佔位符在語句中的位置必須一致,否則就會有異常。
groupBy:用於控制分組。
having:用於對分組進行過濾。
orderBy:用於對記錄進行排序。
limit:用於進行分頁。
例如查詢出person_inf表中人名以孫開頭的數據
Cursor
cursor=db.query("person_inf",new
String[]{"_id,name,age"},"name
like
?",new
String
[]{"孫%"},null,null,"personid
desc","5,10");
cursor.close();
『貳』 sqlite資料庫有啥用。資料庫是幹啥的
資料庫:按照數據結構來組織、存儲和管理數據的倉庫,通俗的講就是按照一定的結構來存儲數據的。
資料庫(database,DB):特點 長期存儲計算機內,有組織(具備一定的結構),可共享,數據集合。
sqlite:輕型的資料庫,可以直接嵌入某款應用中,佔用內存較小,滿足對數據的存儲,查詢需要。
『叄』 SQLite資料庫操作 使用SQLite資料庫,創建一個User.db的資料庫
如果用Navicat的話,直接新建鏈接,輸入鏈接名,選擇新建資料庫文件,指定一個db資料庫文件路徑即可;
如果用程序創建的話,會調用sqlite提供的庫文件,不同語言的寫法上不太一樣,不好舉例
『肆』 怎麼使用SQLiteStudio來管理Sqlite資料庫
下載sqliteStudio,解壓,如圖,打開sqliteStudio.exe 即可使用
打開,
新建資料庫,點擊database-add database
輸入資料庫名,點擊OK
點擊數據名,在Table 右擊,然後create a table
設置資料庫的如圖所示,大家可以詳細的了解了。
『伍』 Studio中怎麼使用已經有的SQLite資料庫
可以嘗試把db文件放到assets文件夾下,直接當做資源來讀取。參考一下代碼:
public class DataBaseHelper extends SQLiteOpenHelper {
private Context mycontext;
//private String DB_PATH = mycontext.getApplicationContext().getPackageName()+"/databases/";
private static String DB_NAME = "(datbasename).sqlite";//拓展名可以是.sqlite 或者是 .db
public SQLiteDatabase myDataBase;
/*private String DB_PATH = "/data/data/"
+ mycontext.getApplicationContext().getPackageName()
+ "/databases/";*/
public DataBaseHelper(Context context) throws IOException {
super(context,DB_NAME,null,1);
this.mycontext=context;
boolean dbexist = checkdatabase();//首先判斷下db是不是存在 存在的話就直接使用了
if (dbexist) {
//System.out.println("Database exists");
opendatabase(); //直接打開
} else {
System.out.println("Database doesn't exist");
createdatabase();//否則的話才去創建新的db
}
}
public void createdatabase() throws IOException {
boolean dbexist = checkdatabase();
if(dbexist) {
//System.out.println(" Database exists.");
} else {
this.getReadableDatabase();
try {
database();
} catch(IOException e) {
throw new Error("Error ing database");
}
}
}
private boolean checkdatabase() {
//SQLiteDatabase checkdb = null;
boolean checkdb = false;
try {
String myPath = DB_PATH + DB_NAME;
File dbfile = new File(myPath);
//checkdb = SQLiteDatabase.openDatabase(myPath,null,SQLiteDatabase.OPEN_READWRITE);
checkdb = dbfile.exists();
} catch(SQLiteException e) {
System.out.println("Database doesn't exist");
}
return checkdb;
}
private void database() throws IOException {
//Open your local db as the input stream
InputStream myinput = mycontext.getAssets().open(DB_NAME);
// Path to the just created empty db
String outfilename = DB_PATH + DB_NAME;
//Open the empty db as the output stream
OutputStream myoutput = new FileOutputStream("/data/data/(packagename)/databases /(datbasename).sqlite");
// transfer byte to inputfile to outputfile
byte[] buffer = new byte[1024];
int length;
while ((length = myinput.read(buffer))>0) {
myoutput.write(buffer,0,length);
}
//Close the streams
myoutput.flush();
myoutput.close();
myinput.close();
}
public void opendatabase() throws SQLException {
//Open the database
String mypath = DB_PATH + DB_NAME;
myDataBase = SQLiteDatabase.openDatabase(mypath, null, SQLiteDatabase.OPEN_READWRITE);
}
public synchronized void close() {
if(myDataBase != null) {
myDataBase.close();
}
super.close();
}
}
『陸』 如何使用SQLite
前些時候看到興趣小組里有人問「Android上SQLite的最佳實踐」是什麼,好奇地搜了一下,確實沒有一個好一點的指導文檔,平時的使用也只是簡單的拷貝code,並沒有深入的研究過。以下是我看到的Kevin關於其使用的心得,原文的大體的意思是:Android例子涵蓋了一些Sqlite的基本用法,但它們並沒有深入地給出合理的使用方法,更重要的是,不合理的使用方法。大多數例子和文檔只是涉及最基本的資料庫查詢,或者教你如何創建一個ContentProvider。從來不提及的地方像: · 什麼地方創建和保存SQLiteOpenHelper實例? · 可以有多少個實例? · 多線程同時訪問資料庫有沒有什麼要擔心的?基本的內容是,你可以任意次數地連接Sqlite資料庫,而且Android系統也支持你這樣做。Sqlite擁有文件級別的鎖,用來同步訪問和防止錯誤。如果你只知道這些,那麼,將會給你帶來很大的痛苦。開源的一個好處是,你可以深入代碼一探究竟。從代碼和一些測試中,我了解到以下事實: · Sqlite擁有文件級別的鎖。許多線程可以同時讀,但只有一個可以寫。鎖阻止多個同時寫入。 · Android在SQLiteDatabase中實現了一些java鎖來確保動作是同步進行。 · 如果你用多個線程瘋狂地訪問資料庫,你的資料庫不會(或不應該)崩潰。沒提到的是,如果你通過多個不同的真實連接同時寫資料庫,其中的某個會失敗,它不會等到前一個完成後繼續寫入。簡單地,不會寫入你的改變,更糟糕的是,你也得不到一個異常,只是在LogCat中輸出一些message,僅此而已。SQLiteOpenHelper類做了一些有趣的事。盡管它有方法可以獲得一個只讀的連接和可讀寫的連接,但實質上它們是同一個連接。假設沒有文件寫錯誤的話,只讀的連接實質上就是一個可讀寫的連接。有趣吧。因此,如果你的app中使用一個helper的話,即便從多線程中使用,你也從未使用多個連接。同樣,一個helper中只有一個SQLiteDatabase的實例,這個實例中實現了一些java鎖。因此,當你正在執行資料庫的操作時,其它db的操作都將鎖定。即便是你使用多個線程來做這些事以便優化資料庫的性能,壞消息,沒有什麼用。按照我的認識,SQLite工作的方式,基本上不可能會破壞你的資料庫,除非代碼里有bug或者有硬體問題。因此,我推薦這樣使用:創建一個SQLiteOpenHelper靜態對象。什麼時候去close它呢?不需要。當app關閉,它會自動釋放文件引用。但是,會不會有「close() was never explicitly called on database」異常呢?如果你注意的話,當連接掛在那裡的時候,你沒有得到那個異常。你只是在連接已經建立,而你又嘗試打開另一個時才會有異常。因此,你只需要打開一次連接。像這樣來使用:public class DatabaseHelper extends OrmLiteSqliteOpenHelper{ private static DatabaseHelper instance; public static synchronized DatabaseHelper getHelper(Context context) { if (instance == null) instance = new DatabaseHelper(context); return instance; }//Other stuff... } 就這些。。。
『柒』 sqlite資料庫從安裝到使用的方法,因為我看了之後不知道要不要安裝了
sqlite資料庫是不需要安裝的。
使用sqlite程序可以生成一個資料庫文件。例如test.db (文件名自己設定,擴展名也無要求)
當然,你的程序必須要支持sqlite,例如php是在配置中設置。
之後就可以在程序中調用sqlite的函數來操作這個文件。
『捌』 如何使用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) {
『玖』 sqlite資料庫什麼時候用
如果是本地數據的需求用SQlite,如果像登陸有用驗證或者網路間共享數據的話,就需要調用WebService與後台伺服器數據交互,這兩種數據是沒有聯系的。一個是本地資料庫,一個是伺服器端資料庫。本地用資料庫就是SQlite,別的不太可能,終端沒有那麼高的性能,再說甲骨文公司也沒出手機端oracle啊。
如果你的數據是已知的,靜態的,沒有太多的變化,滿可以在本地SQlite中存儲、讀取。這樣不會因網路問題而降低效率和成功率。如果數據未知、有實時的變化或者有與其他用戶交互、共享的數據必然需要後台伺服器數據。
『拾』 如何使用sqlite創建資料庫
1.首先你需要去下載一個 Navicat for SQLite ,怎麼下載這里我不多說,你可以去網路搜索。最好下載綠色版。搜索 「Navicat for SQLite 綠色版」。
2.下載後,右擊軟體包進行解壓縮。
3.下載後雙擊文件夾,打開文件目錄,找到 navicat.exe 這個主程序,右擊在彈出菜單依次點擊【發送到(N)】--->【桌面快捷方式】。
4.這時你的電腦桌面就多了一個 navicat.exe 的快捷方式圖標,以後需要打開,直接點擊這個快捷方式就可以了。
5.雙擊桌面快捷方式,打開軟體,在軟體左上角點擊【連接】按鈕,點擊後彈出新建連接對話框。
6.在彈出窗口中輸入【連接名】,選擇【類型】-然後在下面選擇資料庫文件,或者資料庫保存位置。
7.這樣就在你的指定位置創建了一個Sqlite資料庫文件了,有了這個資料庫文件你可以做任何資料庫的操作了。