步驟:
創建數據庫:方法有兩種,
1,第一張方法,通過SQLiteOpenHelper實現:
創建一個helper類繼承SQLiteOpenHelper,
系統會提示你實現兩個方法和一個構造函數,一個是創建數據庫方法,一個是更新方法,一個是4個參數的構造案例如下:
public class MySqliteHelper extends SQLiteOpenHelper{
public MySqliteHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
//創建表語句創建一個叫做圖書的表,
sqLiteDatabase.execSQL("create table book(_id integer primary key autoincrement,name varchar(20),page integer,price real)");
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) {
}
}
這個時候一個幫助類就已經實現好了,只要在需要的時候實現這個構造方法,數據庫就創建好了,現在我們需要的就是在onCreate方法中創建一張表
那麼應該如何書寫?
看上邊oncreate放法中的語句,語句中創建一個叫做圖書的表,裏邊的屬性分別是id,自增的,書名,頁數,價格。
簡單的一句話,就創建好了一張表,但是有個前提就是,你需要在外部創建helper對象,纔會在創建數據庫的時候,將表一同創建出來,現在我們看一下如何創建數據庫加表吧?
現在我們來到mainActivity中,
public class MainActivity extends AppCompatActivity {
private MySqliteHelper helper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//創建helper,傳入上下文,數據庫名字,工廠默認爲null,版本號爲1;
helper=new MySqliteHelper(this,"library",null,1);
// 創建數據庫對象
// helper.getReadableDatabase()
SQLiteDatabase db = helper.getWritableDatabase();
//這裏是增刪改查的方法,後面分別單個講解
db.insert()
db.query()
db.update()
db.delete()
}}
這裏我想應該非常簡單了吧?聲明helpr,通過構造創建helper對象,得到對象之後,通過get方法,得到數據庫對象,這個時候數據庫和內部的圖書的表就已經生成了,只是在內部封裝着你看不到而已。
注意:這裏有兩個創建數據庫的get方法,
getReadableDatabase()和getWritableDatabase();
有必要對他們兩個進行以下解釋:
getWritableDatabase取得的實例不是僅僅具有寫的功能,而是同時具有讀和寫的功能同樣的getReadableDatabase取得的實例也是具對數據庫進行讀和寫的功能。
兩者的區別在於
getWritableDatabase取得的實例是以讀寫的方式打開數據庫,如果打開的數據庫磁盤滿了,此時只能讀不能寫,此時調用了getWritableDatabase的實例,那麼將會發生錯誤(異常)
getReadableDatabase取得的實例是先調用getWritableDatabase以讀寫的方式打開數據庫,如果數據庫的磁盤滿了,此時返回打開失敗,繼而用getReadableDatabase的實例以只讀的方式去打開數據庫。
所以建議使用getread方法,不會出現錯誤,並且實現的功能是一樣的。
說道這裏第一種方法就介紹的差不多了,接下來是第二種方法:
2,通過 SQLiteDatabase.openOrCreateDatabase(file, factory):
3通過:Context.openOrCreateDatabase ()方法,其實大同小異,
因爲現在絕大多數都在使用幫助類,方便後期的更新和維護,所以這裏不在詳細的描述了。
下面看一下如何使用數據庫進行增刪改查吧?
思路回來,重新回到剛纔創建的主活動中:
首先看一下增的方法,也就是插入方法:
需要表明,null,和map集合的values對象,將數據包裝進values中。
ContentValues values=new ContentValues();
values.put("key","數據");
db.insert("book",null,values);
//更新,參數,表名,values更新的values集合數據,條件名映射,條件的屬性映射值,
ContentValues values=new ContentValues();
values.put("name","校長");
db.update("book",values,"id=?",new String[]{"1"});
//刪除,原理同上,只是節省了values的使用,刪除而已不需要包裝數據
db.delete("book","id=?",new String []{"1"});
//下邊就是最麻煩的查找,也是經常使用的方發,這裏一般使用七個參數的,這都算少的,當然,如果查詢全部的時候只設置一個參數,其他都爲null即可。
參數1是表名,參數二是要得到的數據的列名key數組,第三個還是條件,第四個是條件值,這句話就是說查詢book中id是1的id值和姓名的值,
Cursor cursor = db5.query("user", new String[]{"id","name"}, "id=?", new String[]{"1"}, null, null, null, null);//返回的是遊標對象。
//利用遊標遍歷所有數據對象,通過循環將數據得到
while(cursor.moveToNext()){
String name = cursor.getString(cursor.getColumnIndex("name"));
//日誌打印輸出
Log.i(SWORD,"query-->"+name);
說道這裏簡單的時候用方法就模糊的講解完畢,這裏講解的有些模糊,很多用不到的參數也沒有講,不過足夠用了,
還有一中方法就是直接通過sq語句的方式進行增刪查改
這種方法,新人不建議使用,但是會玩的人會覺得非常的方便
db.rawQuery("查詢語句",String[]selectionArg)//查詢語句,條件的值數組
db.execSQL("增刪改語句");