赞
踩
SQLite是一种小巧的嵌入式数据库,在App开发过程中只用到数据定义和数据操纵两类SQL
数据定义语言:表格的创建,删除,结构修改
数据操纵语言:数据的增删改查
表格创建
SQLite支持整型INTEGER、长整型LONG、字符串VARCHAR、浮点数FLOAT,但不支持布尔类型。布尔类型的数据要使用整型保存,如果直接保存布尔数据,在入库时SQLite会自动将它转为0或1,其中0表示false,1表示true。
表格修改
表格的修改动作由alter命令完成,格式为"ALTER TABLE 表格名称 修改操作,"。不过SQLite只支持增加字段,不支持修改字段,也不支持删除字段。对于字段增加操作,需要在alter之后补充add命令,具体格式如“ALTER TABLE 表格名称 ADD COLUMN 字段名称 字段类型;”。
注意,SQLite的ALTER语句每次只能添加1列字段,若要添加多列,就得分多次添加。
SQLiteDatabase是SQLite的数据库管理类,它提供了若干操作数据表的APl,常用的方法有3类:
1.管理类,用于数据库层面的操作。
SQLiteDatabase sqLiteDatabase = openOrCreateDatabase("zhangsan", MODE_PRIVATE, null);
2.事务类,用于事务层面的操作。
3.数据处理类,用于数据表层面的操作。
SQLiteOpenHelper是Android提供的数据库辅助工具,用于指导开发者进行SQLite的合理使用。
SQLiteOpenHelper的具体使用步骤如下:
package com.example.lesson.utils.sqlite; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import androidx.annotation.Nullable; public class SQLiteUtils extends SQLiteOpenHelper { private static SQLiteUtils mHelper = null; private static SQLiteDatabase mReadDatabase = null; private static SQLiteDatabase mWriteDatabase = null; //单例模式 public static SQLiteUtils getInstance(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) { if (mHelper == null) { return new SQLiteUtils(context, name, factory, version); } else { return mHelper; } } //构造方法,必须调用父类的构造方法 public SQLiteUtils(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); } //打开写链接 private SQLiteDatabase openWriteLink() { if (mWriteDatabase == null || !mWriteDatabase.isOpen()) { return mHelper.getWritableDatabase(); } else { return mWriteDatabase; } } //打开读链接 private SQLiteDatabase openReadLink() { if (mReadDatabase == null || !mReadDatabase.isOpen()) { return mHelper.getReadableDatabase(); } else { return mReadDatabase; } } //关闭链接 private void closeLink() { if (mReadDatabase != null && mReadDatabase.isOpen()) { mReadDatabase.close(); mReadDatabase = null; } if (mWriteDatabase != null && mWriteDatabase.isOpen()) { mWriteDatabase.close(); mWriteDatabase = null; } } //数据库初始化时需要进行的一些操作,比如创建数据表 @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { } }
增
//获取写入database对象
//获取写入参数对象
ContentValues values = new ContentValues();
//将要传入的参数以键值对的方式写入参数对象
values.put();
writableDatabase.insert(<1>,<2>,<3>);
参数分别为:表名,第三个参数为空时的默认字段名,ContentValues对象
删
//获取写入database对象
writableDatabase.delete(<1>,<2>,<3>);
//参数分别为:表名,where语句,参数数组
writableDatabase.delete(TABLE_NAME,"where name = ?",new String[]{"zhangsan"});
//删除全部内容
writableDatabase.delete(TABLE_NAME,"1=1",null);
改
//获取写入database对象
ContentValues values = new ContentValues();
values.put();
//参数分别为:表名,写入参数对象,where语句,参数数组
writableDatabase.update(TABLE_NAME,values,"name = ?",new String[]{"zhangsan"});
查
//获取读取database对象
//查询所有记录时:第一个参数为表名,其余为null,获得游标
Cursor cursor = readableDatabase.query(TABLE_NAME, );
//根据columnindex读取每一列的值
while (cursor.moveToNext()) {
String name = cursor.getColumnName(0);
}
//根据条件查询时
query();
//其中的selection参数为"where name = ?" ,selectionArgs = 参数数组
//然后依然是获取游标,遍历
下方App Inspection栏可以看到运行应用中的数据库
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。