標籤:
主java
package com.itheima.createdatabase;import android.app.Activity;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;public class MainActivity extends Activity { private Context mContext; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mContext = this; //建立一個協助類對象 MySqliteOpenHelper mySqliteOpenHelper = new MySqliteOpenHelper(mContext); //調用getReadableDatabase方法,來初始化資料庫的建立 SQLiteDatabase db = mySqliteOpenHelper.getReadableDatabase(); } }
同一目錄下建立一個類繼承於資料庫
package com.itheima.createdatabase;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;public class MySqliteOpenHelper extends SQLiteOpenHelper { public MySqliteOpenHelper(Context context) { //context :上下文 , name:資料庫檔案的名稱 factory:用來建立cursor對象,預設為null //version:資料庫的版本號碼,從1開始,如果發生改變,onUpgrade方法將會調用,4.0之後只能升不能將 super(context, "info.db", null,1); } //oncreate方法是資料庫第一次建立的時候會被調用; 特別適合做表結構的初始化,需要執行sql語句;SQLiteDatabase db可以用來執行sql語句 @Override public void onCreate(SQLiteDatabase db) { //通過SQLiteDatabase執行一個建立表的sql語句 db.execSQL("create table info (_id integer primary key autoincrement,name varchar(20))"); } //onUpgrade資料庫版本號碼發生改變時才會執行; 特別適合做表結構的修改 @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //添加一個phone欄位 db.execSQL("alter table info add phone varchar(11)"); }}
老師筆記
什麼情況下我們才用資料庫做資料存放區? 大量資料結構相同的資料需要儲存時。
mysql sqlserver2000 sqlite 嵌入式 輕量級
SqliteOpenHelper
建立資料庫步驟:
1.建立一個類整合SqliteOpenHelper,需要添加一個構造方法,實現兩個方法oncreate ,onupgrade
構造方法中的參數介紹:
//context :上下文 , name:資料庫檔案的名稱 factory:用來建立cursor對象,預設為null
//version:資料庫的版本號碼,從1開始,如果發生改變,onUpgrade方法將會調用,4.0之後只能升不能將
super(context, "info.db", null,1);
2.建立這個協助類的一個對象,調用getReadableDatabase()方法,會協助我們建立開啟一個資料庫
3.複寫oncreate和onupgrdate方法:
oncreate方法是資料庫第一次建立的時候會被調用; 特別適合做表結構的初始化,需要執行sql語句;SQLiteDatabase db可以用來執行sql語句
//onUpgrade資料庫版本號碼發生改變時才會執行; 特別適合做表結構的修改
協助類對象中的getWritableDatabase 和 getReadableDatabase都可以協助我們擷取一個資料庫操作對象SqliteDatabase.
區別:
getReadableDatabase:
先嘗試以讀寫方式開啟資料庫,如果磁碟空間滿了,他會重新嘗試以唯讀方式開啟資料庫。
getWritableDatabase:
直接以讀寫方式開啟資料庫,如果磁碟空間滿了,就直接報錯。
android 資料庫的建立