本文整理自网络,侵删。
SQLite是一款开源的、嵌入式关系型数据库,第一个版本Alpha发布于2000年。SQLite在便携性、易用性、紧凑性、高效性和可靠性方面有着突出的表现。
在Android中创建的SQLite数据库存储在:/data/data/<包名>/databases/目录下。
主要特点:
-轻量级
-独立性,没有不依赖,无需安装
-跨平台,支持众多操作系统
-支持高达2TB大小的数据库
-每个数据库以单个文件的形式存在
-以B-Tree的数据结构形式存储在硬盘
SQLite的数据类型:
SQLite支持NULL、INTEGER、REAL、TEXT和BLOB数据类型
分别代表:空值、整型值、浮点值、字符串值、二进制对象。
动态数据类型(弱引用):
当某个值插入到数据库中时,SQLite将会检测它的数据类型,如果该类型与关联的列不匹配,SQLite则会尝试将该值转换成该列的类型,如果不能转换,则该值将作为本身的类型存储。
在Android中使用SQLite主要涉及两个类:
SQLiteDatabase和SQLiteOpenHelper,下面对这两个类进行主要的分析。
SQLiteDatabase
这个类提供了一些管理SQLite数据库的方法,比如创建、删除、执行SQL命令,和执行其他常见的数据库管理任务的方法。每个程序的数据库名字是唯一的。
常用方法:
db.execSQL(String sql) //执行任何的SQL语句
db.insert(String table,String nullColumnHack,ContentValues values) //插入记录
db.delete(String table,String whereClause,String[] whereArgs)//删除记录
db.update(String table,ContentValues values,String whereClause,String[] whereArgs)//更新记录
db.query(String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy)//查询记录
db.rawQuery(String sql,String[] selectionArgs)//通过sql语句查询记录
下面是一个简单操作SQLite数据库的示例:
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //每个程序都有自己的数据库 //通过openOrCreateDatabase来打开或创建一个数据库,返回SQLiteDatabase对象 /** * openOrCreateDatabase(String name,int mode,SQLiteDatabase.CursorFactory factory) * name: 数据库名 * mode: 数据库权限,MODE_PRIVATE为本应用程序私有,MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE分别为全局可读和可写。 * factory: 可以用来实例化一个cusor对象的工厂类 */ SQLiteDatabase db = openOrCreateDatabase("user.db",MODE_PRIVATE,null); //创建一个表 db.execSQL("create table if not exists userTb (" + "_id integer primary key," + "name text not null,age integer not null," + "sex text not null)"); //向表中插入记录 db.execSQL("insert into userTb (name,age,sex) values ('张三',18,'女')"); db.execSQL("insert into userTb (name,age,sex) values ('李四',19,'男')"); db.execSQL("insert into userTb (name,age,sex) values ('王五',20,'女')"); //Cursor为查询结果对象,类似于JDBC中的ResultSet Cursor queryResult = db.rawQuery("select * from userTb", null); if (queryResult != null) { while (queryResult.moveToNext()) { Log.i("info", "id: " + queryResult.getInt(queryResult.getColumnIndex("_id")) + " 姓名: " + queryResult.getString(queryResult.getColumnIndex("name")) + " 年龄: " + queryResult.getInt(queryResult.getColumnIndex("age")) + " 性别: " + queryResult.getString(queryResult.getColumnIndex("sex"))); } //关闭游标对象 queryResult.close(); } //关闭数据库 db.close(); } }
当执行完openOrCreateDatabase("user.db",MODE_PRIVATE,null)后,会在/data/data/<包名>/databases/目录下创建一个数据库文件,打开DDMS可以查看。也可以将其导出,使用navigate等工具打开查看里面的数据。
相关阅读 >>
忘记grafana不要紧2种grafana重置admin密码方法详细步骤
更多相关阅读请进入《Sqlite》频道 >>

数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。