SQLite数据库存储
在Android的学习过程中,我相信大家了解到Android系统是内置了数据库的,SQLite是一款轻量级关系型数据库,它的运算速度非常快,占用的资源也非常的少,因而特别适合在移动设备上使用。Android将SQLite数据库内置到系统底层当中,使得Android中的持久化技术有了一个质的飞跃。
创建数据库
SQLiteOpenHelper是Android为了让我们能够更加方便地管理数据库专门提供的一个帮助类,借助这个类我们能够非常简单地对数据库进行创建和升级
首先,我们需要知道SQLiteOpenHelper累是一个抽象类,这意味着我们需要自己创建一个类去继承他,其中还有两个抽象方法onCreate()
和 onUpgrade()
,我们必须在自己创建的类中去重写这两个方法,然后去实现数据库的创建、升级逻辑。
其中SQLiteOpenHelper中还有两个非常重要的实例方法:getReadableDatabase()和getWritableDatabase(),这两个方法都可以创建或者是打开一个现有的数据库(如果数据库已经存在则直接打开,否则直接创建一个新的数据库),并返回一个可以对数据库进行读写操作的对象。不同的是,当数据库不可写入的时候,getReadableDatabase()方法返回的对象将以只读的方式去打开数据库,而getWritableDatabase()方法则是抛出异常。
数据库文件会存放在 /data/data/ <package name> /databases/
目录中
简单的使用帮助类创建SQLite数据库
package com.eendtech.www.mysqlite.DAO;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import android.widget.Toast;
/**
* SQLite数据库帮助类
* Created by Seale on 2018/12/25.
*/
public class MyDatabaseHelper extends SQLiteOpenHelper {
private static final String TAG = "MyDatabaseHelper";
private Context context ;
private String sqlString =
"CREATE TABLE STUDENT(id integer primary key autoincrement," +
"name text," +
"sex char(2)," +
"age integer" +
")"
;
public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, null, version);
this.context = context ;
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(sqlString);
Log.d(TAG, "onCreate: 创建数据库成功");
Toast.makeText(context,"创建数据库成功",Toast.LENGTH_SHORT).show();
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
public class MainActivity extends AppCompatActivity {
private MyDatabaseHelper databaseHelper ;
private Button btn_create ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
private void initView (final int version){
btn_create = findViewById(R.id.btn_create);
btn_create.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
databaseHelper = new MyDatabaseHelper(getApplicationContext(),"Student.db",null,version);
databaseHelper.getWritableDatabase();
}
});
}
}
升级数据库
我们可以在onUpgrade()方法中进行升级数据库的操作。
我们可以看如下例子
package com.eendtech.www.mysqlite.DAO;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import android.widget.Toast;
/**
* SQLite数据库帮助类
* Created by Seale on 2018/12/25.
*/
public class MyDatabaseHelper extends SQLiteOpenHelper {
private static final String TAG = "MyDatabaseHelper";
private Context context ;
private String sqlString =
"CREATE TABLE STUDENT(id integer primary key autoincrement," +
"name text," +
"sex char(2)," +
"age integer" +
")"
;
private String sql =
"CREATE TABLE TEACHER(id integer primary key autoincrement," +
"name text," +
"sex char(2)," +
"age integer)"
;
public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, null, version);
this.context = context ;
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(sqlString);
db.execSQL(sql);
Log.d(TAG, "onCreate: 创建数据库成功");
Toast.makeText(context,"创建数据库成功",Toast.LENGTH_SHORT).show();
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS STUDENT");
db.execSQL("DROP TABLE IF EXISTS TEACHER");
onCreate(db);
}
}
本文版权归属:极束の梦想
转载文章时,请保留本文的版权内容。
作者:Seale
同时也欢迎各位大大交换友链。