1.Android為了讓我們能夠更加方便地管理數據庫,專門提供了一個SQLiteOpenHelper幫助類,借助這個類就可以非常簡單地對數據庫進行創建和升級。SQLiteOpenHelper是一個抽象類,如果想使用它的話,就要創建一個自己的幫助類(這里我們以自己創建的MySqliteHelper類去繼承)去繼承它。SQLiteOpenHelper中有兩個抽象方法,分別是onCreate()和onUpgrade(),我們必須在自己的幫助類里面重寫這兩個方法,然后在這兩個方法中實現創建、升級數據庫的邏輯。
2.為了以后方便修改數據庫名,表名及相關字段,專門創建一個常量類(Constant)進行管理。專門創建一個類(DbManger)進行對數據庫操作的工具欄。在MainActivity類中通過點擊按鈕來創建數據庫和表。
3.<1>MySqliteHelper類代碼:
public class MySqliteHelper extends SQLiteOpenHelper { public MySqliteHelper(Context context) { super(context, Constant.DATABASE_NAME, null, Constant.DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { //創建表結構 String sql = "create table "+Constant.TABLE_NAME+"("+ Constant.ID+" integer primary key autoincrement,"+ Constant.NAME+" varchar(20)," + Constant.AGE+" integer)"; sqLiteDatabase.execSQL(sql);//執行sql語句 } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { } }
<2>Constant類代碼:
public class Constant { public static final String DATABASE_NAME = "info.db";//數據庫名稱 public static final int DATABASE_VERSION = 1;//數據庫版本號 public static final String TABLE_NAME = "person";//表名 public static final String ID = "id";//表字段 public static final String NAME = "name";//表字段 public static final String AGE = "age";//表字段 }
<3>DbManger類代碼:
/** * Created by lance on 2017/2/27. * 主要是對數據庫操作的工具欄 */ public class DbManger { private static MySqliteHelper mMySqliteHelper; public static MySqliteHelper getIntance(Context context){ if(mMySqliteHelper == null){ mMySqliteHelper = new MySqliteHelper(context); } return mMySqliteHelper; } }
<4>MainActivity類代碼:
public class MainActivity extends AppCompatActivity { private Button mDbButton; private MySqliteHelper mMySqliteHelper; private SQLiteDatabase db; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mMySqliteHelper = DbManger.getIntance(MainActivity.this); mDbButton = (Button) findViewById(R.id.create_db); /** * 點擊按鈕創建數據庫 */ mDbButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { /* getReadableDatabase()和getWritableDatabase()都是創建或打開數據庫 如果數據庫不存在則創建數據庫,如果數據庫存在直接打開數據庫 默認情況下這兩個函數都表示打開或創建可讀可寫的數據庫對象,如果磁盤已滿或者是 數據庫本身權限等情況下getReadableDatabase()打開的是只讀數據庫 */ db = mMySqliteHelper.getWritableDatabase(); } }); } }