1.SQLite介绍
SQLite是一款非常流行的嵌入式数据库,它支持SQL操作,并且只用很少的内存。
Android在运行时集成了SQLite,所有每个Android应用程序都可以使用SQLLite数据库。
对熟悉SQL的开发人员来说,使用SQLite相当简单。
支持数据类型
null、integer、real、text、blob
2.使用SQLite
首次使用SQLite需要创建数据库和表,以及一些初始化数据。
Android提供了抽象类SQLiteOpenHelper完成此类功能。
2.1 SQLiteOpenHelper中的方法
onCreate(SQLiteDatabase db) //第一次创建数据库时被调用,比如表只需要创建一次,那么这个执行语句就可以写在onCreate()里面
onUpgrade(SQLiteDatabase db,int arg1,int arg2) //系统发现现有数据库版本不同,即会被调用
新建一个类,继承SQLiteOpenHelper,同时实现onCreate()和onUpgrade()方法,以及一个构造方法
public class MyOpenHelper extends SQLiteOpenHelper { /** * * @param context 上下文 * @param name 数据库文件名称 * @param factory 如果为null则使用默认方式 * @param version 版本号,后期可以修改,但只能往上升,不能往下降 */ public MyOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, 1); } /** * 当数据库文件不存在的时候,创建数据库文件,并且是第一次使用 * @param sqLiteDatabase */ @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { Log.i("onCreate","调用onCreate"); } /** * 只有版本更新时调用 * @param sqLiteDatabase * @param i 旧版本号 * @param i1 当前版本号 */ @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { Log.i("onUpgrade","调用onUpgrade"); } }
(在android系统中,每个应用程序的SQLite数据库都被保存在各自的/data/data/<包名>/databases目录下,默认情况下,都是私有的,仅允许当前应用程序访问。)
activity_main.xml中加个按钮:
<Button android:id="@+id/button" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="创建数据库" android:onClick="test_01"/>
MainActivity:
public void test_01(View view){ //实例化 MyOpenHelper myOpenHelper = new MyOpenHelper(this,"mybase.db",null,1); //获取一个SQLiteDatabase对象 SQLiteDatabase sqLiteDatabase = myOpenHelper.getReadableDatabase(); //sql语句,暂时忽略不写 String sql = " "; //执行sql语句 sqLiteDatabase.execSQL(sql); //关闭 sqLiteDatabase.close(); myOpenHelper.close(); }
2.2 SQLiteDatabase对象说明
2.2 1 通过此对象就可以调用SQLiteDatabase的方法来进行数据库操作,例如创建表、插入数据、删除数据等操作。
2.2.2 获取SQLiteDatabase对象的方法
getWritableDatabase() //以读写的方式打开数据库,一旦磁盘空间满了,数据库就只能读不能写,倘若再次打开数据就会报错
getWritableDatabase() //先以读写的方式打开数据库,如果磁盘满了就会打开失败,当打开失败后会继续尝试以只读方式打开数据库。
(SQLiteDatabase既代表了与数据库的连接,又能执行sql语句)