学Android---SQLite

本文介绍了Android中的SQLite数据库,包括其基本概念、使用方法及常见API。通过实例演示了如何创建数据库、执行SQL命令、增删改查数据等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大家好,我是一只在Android学习路上缓慢前行的小白,没有经验,啥也不会,希望大家多多帮助~

SQLite概念简介

SQLite数据库是Android系统自带的一个嵌入式(embeded SQL database)的数据库,适用SQL语法,它提供SQLiteDatabase类处理数据库的创建、修改、删除、查询等操作。如果数据固定而且数量不大,就可以使用类似SQLite这样的嵌入式数据库。
数据库在手机中的默认路径:data/data/包名/database/

SQLite的简单使用

推荐W3School的sql教程
http://www.w3school.com.cn/sql/

1、SQLiteDatabase类

主要用来提供一些管理数据库的方法

//获取SQLiteDatabase对象
//openOrCreateDatabase(String name, int mode, CursorFactory factory);
SQLiteDatabase db = openOrCreateDatabase("people.db", MODE_PRIVATE, null);
//创建一个名为people的数据库(如果有则直接打开)

openOrCreateDatabase会检查数据库是否已经存在,是则打开数据库,否则创建数据库,创建成功会传回一个SQLiteDatabase对象,否则抛出FileNotFoundException异常。
(1)name表示创建的数据库的名称,扩展名为.db,也可以指定扩展名;
(2)mode为配置文件案的访问权限,常用的值如下:
MODE_PRIVATE: 只有本应用程序具有访问权限;
MODE_READABLE:所有应用程序都具有读取权限;
MODE_WORLD_WRITEABLE:所有应用程序都具有写入权限;

SQLiteDatabase中的常用方法:

//1、执行SQL命令
execSQL(String sql);
//举例.创建一张名为person的表,该表有id、名字name、年龄age三个属性列
//这里将id设置为主键且自动增长
String create_table = "create table if not exists person "
                     +"(_id integer primary key autoincrement, " 
                     +"name text not null, " 
                     +"age integer not null)";
db.execSQL(create_table);
//2、插入数据
insert(String table,String nullColumnHack,ContentValues values);
//举例.使用values存放信息,将values插入到表person中
ContentValues values = new ContentValues();
values.put("name", "zhangsan");
values.put("age", "20");
db.insert("person", null, values);
values.clear();
//3、删除数据
delete(String table, String whereClause, String[] whereArgs)
//举例.
//在表中删除name为zhangsan的这一行数据,?相当于占位符,代替第三个参数
db.delete("person", "name like ?","new Stirng[]{"zhangsan"};
//4、修改数据
update(String table, ContentValues values, String whereClause, String[] whereArgs)
//举例.将zhangsan的年龄修改为22  
values.put("age", "22");
db.update("person", values, "name like ?", new String[]{"zhangsan"});
values.clear();
//5、查询数据
(1)query(String table, String[] columns, String selection,String[] selectionArgs, String groupBy, String having,String orderBy);
(2)rawQuery(String sql, String[] selectionArgs)
//举例.查找所有年龄大于18的人的信息并且将查询结果打印出来
Cursor cursor = db.query("person", null, "age>?", "new String[]{"18"}, null, null, "age");
//或者
//Cursor cursor = db.rawQuery("selete * from person where age > ?", new String[]{"18"});
if(cursor != null){
    while(cursor.moveToNext()){
        int id = cursor.getInt(cursor.getColumnIndex("_id"));
        String name = cursor.getString(cursor.getColumnIndex("name"));
       int age = cursor.getInt(cursor.getColumnIndex("age"));
       Log.d("MainActivity", "id = " + id + ", name = " + name + ", age = " + price);
   }
}    

Cursor类是Android查询数据后得到的一个管理数据集合的类。
Cursor:游标接口,提供了遍历查询结果的方法

//6、关闭数据库
db.close();
2、SQLiteOpenHelper类

SQLiteDatabase的帮助类,用于管理数据库的创建和版本更新
(1)建立一个类(如MySQLiteHelper)继承它并重写onCreate()和onUpgrade()方法

onCreate()    //创建数据库时调用
onUpgrade()   //版本更新时调用
getReadableDatabase()   //创建或打开一个只读数据库
getWritableDatabase()   //创建或打开一个读写数据库

(2)实例化子类对象

MySQLiteHelper helper = new MySQLite(MainActivity.this, "newPeople.db");
SQLiteDatabase db = helper.getWritableDatabase();

最后补充

SQLite支持的数据类型

NULL – 空值
INTEGER – 整型值
REAL – 浮点值
TEXT – 字符串值
BLOB – 二进制对象
动态数据类型(弱引用):当某个值插入到数据库时,SQLite将会检查它的类型,如果该类型与关联的列不匹配,SQLite会尝试将该值转换为该列的类型,如果不能转换,该值将作为本身的类型存储

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值