Android-SQLite数据库实例,Android的Io模型你了解多少

}

return mHelper;

}

//创建数据库表,执行建表语句

@Override

public void onCreate(SQLiteDatabase db) {

}

/**

  • 当数据库需要修改的时候(两个数据库版本不同),Android系统会主动的调用这个方法。

  • 一般我们在这个方法里边删除数据库表,并建立新的数据库表.

*/

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}

@Override

public void onOpen(SQLiteDatabase db) {

//每次成功打开数据库后首先被执行

super.onOpen(db);

}

}

创建表

表格的创建动作由create命令完成,格式为“CREATE TABLE IFNOT EXISTS表格名称(以逗号分隔的各字段定义);”。以用户信息表为例,它的建表语句如下所示:

//创建数据库表,执行建表语句

@Override

public void onCreate(SQLiteDatabase db) {

Log.e(getClass().getName(), “onCreate”);

//创建表语句

String SQL_CREATE_ENTRIES = "CREATE TABLE IF NOT EXISTS "

  • TABLE_NAME + “(”

  • _ID + " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,"

  • COLUMN_NAME+" VARCHAR NOT NULL,"

  • COLUMN_AGE+" INTEGER NOT NULL,"

  • COLUMN_UPDATE_TIME+" VARCHAR NOT NULL" + "); ";

//执行完整的sQL语句

db.execSQL(SQL_CREATE_ENTRIES);

}

上面的SQL语法与其他数据库的SQL语法有所出入,相关的注意点说明见下:

①SQL语句不区分大小写,无论是create与table这类关键词,还是表格名称、字段名称,都不区分大小写。唯一区分大小写的是被单引号括起来的字符串值。

②为避免重复建表,应加上IF NOT EXISTS关键词,例如CREATE TABLE IFNOT EXISTS表格名称…

③SQLite支持整型INTEGER、长整型LONG、字符串VARCHAR、浮点数FLOAT,但不支持布尔类型。布尔类型的数据要使用整型保存,如果直接保存布尔数据,在入库时sQLite会自动将它转为0或1,其中0表示false,1表示true。

④建表时需要唯一标识字段,它的字段名为_id。创建新表都要加上该字段定义,例如_id lNTEGER PRIMARY KEY AUTOINCREMENT NOT NULL。

删除表

表格的删除动作由drop命令完成,格式为“DROP TABLE IFEXISTS表格名称;”。下面是删除用户信息表的SQL语句例子:

//删除表

public void deleteTable(SQLiteDatabase db) {

String SQL_DELETE_ENTRIES = "DROP TABLE IF EXISTS " + TABLE_NAME;

db.execSQL(SQL_DELETE_ENTRIES);

}

打开数据库表

下面这段代码会返回一个 SQLiteDatabase 类的实例,使用这个对象,你就可以查询或者修改数据库。

//打开数据库

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享

的读连接(查询数据库)

public SQLiteDatabase openReadLink() {

if (mDB == null || !mDB.isOpen()) {

mDB = mHelper.getReadableDatabase();

}

return mDB;

}

//打开数据库的写连接(可写数据库)

public SQLiteDatabase openwriteLink() {

if (mDB == null || !mDB.isOpen()) {

mDB = mHelper.getWritableDatabase();

}

return mDB;

}

关闭数据库

//由于在数据库关闭时,调用getWritableDatabase()和getReadableDatabase()的成本比较高,

// 因此只要您有可能需要访问数据库,就应保持数据库连接处于打开状态。通常情况下,

// 最好在发出调用的Activity的onDestroy()中关闭数据库。

@Override

protected void onDestroy() {

userDBHelper.closeLink();

super.onDestroy();

}

添加数据

使用 SQLiteDatabase 对象的insert()。

//往该表添加多条记录

public long insert(List infoList) {

long result = -1;

for (int i = 0; i < infoList.size(); i++) {

UserInfoBean info = infoList.get(i);

//不存在唯一性重复的记录,则插入新记录

ContentValues cv = new ContentValues();

cv.put(_ID, info.get_id());

cv.put(COLUMN_NAME, info.getName());

cv.put(COLUMN_AGE, info.getAge());

cv.put(COLUMN_UPDATE_TIME, info.getUpdate_time());

//执行插入记录动作,该语句返回插入记录的行号

result = mDB.insert(TABLE_NAME, “”, cv);

if (result == -1) {//添加成功则返回行号,添加失败则返回-1

return result;

}

}

return result;

}

方法使用:

List list = new ArrayList<>();

list.add(new UserInfoBean(“10”, “帅次次”, 20, “09:00”));

list.add(new UserInfoBean(“12”, “朱元璋”, 30, “11:00”));

list.add(new UserInfoBean(“15”, “赵匡胤”, 40, “13:00”));

list.add(new UserInfoBean(“18”, “李世民”, 50, “15:00”));

long l = userDBHelper.insert(list);

tv_sql.setText(“插入成功:” + l);

修改数据

使用SQLiteDatabase 对象的update()方法。

//根据条件更新指定的表记录

public int update(UserInfoBean info, String condition) {

ContentValues cv = new ContentValues();

cv.put(COLUMN_NAME, info.getName());

cv.put(COLUMN_AGE, info.getAge());

cv.put(COLUMN_UPDATE_TIME, info.getUpdate_time());

//执行更新记录动作,该语句返回更新的记录数量

return mDB.update(TABLE_NAME, cv, condition, null);

}

方法使用:

UserInfoBean bean = new UserInfoBean(“武媚娘”, 32,“12:00”);

userDBHelper.update(bean, “_id=18”);

查找数据

使用SQLiteDatabase 对象的query()方法。

//根据指定条件查询记录,并返回结果数据列表

public List query() {

List infoList = new ArrayList();

//执行记录查询动作,该语句返回结果集的游标

//SELECT语句内容作为 query()方法的参数,比如:要查询的表名,要获取的字段名,WHERE条件,

//包含可选的位置参数,去替代WHERE条件中位置参数的值,GROUP BY条件,HAVING条件。

//除了表名,其他参数可以是null

Cursor cursor = mDB.query(TABLE_NAME, null, null, null, null, null, null);

//循环取出游标指向的每条记录

while (cursor.moveToNext()) {

UserInfoBean info = new UserInfoBean();

info._id = cursor.getString(0);//取出字符串

info.name = cursor.getString(1);//取出字符串

info.age = cursor.getInt(2);//取出整型数

info.update_time = cursor.getString(3);//取出字符串

infoList.add(info);

}

cursor.close();

// 查询完毕,关闭数据库游标

return infoList;

}

方法使用:

userDBHelper.query();

删除数据

使用SQLiteDatabase 对象的delete()方法。

//根据指定条件删除表记录

public int delete(String condition) {

//执行删除记录动作,该语句返回删除记录的数目

return mDB.delete(TABLE_NAME, condition, null);

}

方法使用:

userDBHelper.delete("_id=12");

未创建表或者删除表后不要对表进行操作报错

1、添加数据失败(Error)程序报错

android.database.sqlite.SQLiteException: no such table: user_info (code 1)

2、删改查数据(AndroidRuntime)程序崩溃

android.database.sqlite.SQLiteException: no such table: user_info (code 1)

各参数说明

table:表名称

colums:列名称数组

selection:条件子句,相当于where

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android中的SQLite数据库是一种轻量级的数据库,它可以在Android应用程序中存储和检索数据。SQLite数据库使用SQL语言来管理数据,可以在Android应用程序中创建、读取、更新和删除数据。使用SQLite数据库可以使应用程序更加高效和可靠,因为它可以在本地存储数据,而不需要访问网络。在Android中使用SQLite数据库需要使用SQLiteOpenHelper类来创建和管理数据库SQLiteOpenHelper类提供了一些方法来创建和升级数据库,以及插入、查询、更新和删除数据。在使用SQLite数据库时,需要注意数据类型、表结构、SQL语句等方面的问题,以确保数据的正确性和完整性。 ### 回答2: Android平台经常使用SQLite数据库来存储和管理本地数据。在本文中,我们将讨论如何在Android中使用SQLite数据库。 首先,在Android中使用SQLite数据库,我们需要创建一个SQLiteOpenHelper类。这个类用于创建和升级数据库。它包含了两个重要的方法:onCreate()和onUpgrade()。onCreate()方法将在首次创建数据库时被调用。onUpgrade()方法将在升级数据库时被调用。我们可以在这个类中定义表名,列名,数据库版本号和其他数据库相关信息。 接下来,在我们使用数据库前,需要实例化一个SQLiteOpenHelper类对象。这个对象用于打开或创建数据库。我们可以使用getReadableDatabase()和getWritableDatabase()方法来获取一个可读/写的数据库对象。 在获取数据库对象后,我们可以执行SQL命令来操作数据库。我们可以使用execSQL()方法来执行SQL命令。我们可以使用insert()、update()和delete()方法来执行增、删、改操作。我们可以使用rawQuery()方法来执行查询操作。 SQLiteOpenHelper类和SQLiteDatabase类并不是线程安全的。因此我们需要确保在使用时进行同步操作。我们可以使用synchronized关键字来达到同步效果。 在Android中,许多第三方的开源框架,如OrmLite、GreenDao和Realm等,提供了ORM(对象关系映射)的功能,使得数据库的操作更加简单和便捷。 总的来说,在Android中使用SQLite数据库可以轻松地存储和管理本地数据。SQLiteOpenHelper和SQLiteDatabase提供了丰富的API来操作数据库。ORM框架为我们提供了更加简便的数据库操作方式。因此,掌握AndroidSQLite数据库的使用非常重要。 ### 回答3: Android SQLite数据库Android开发中最常用的数据库之一,它是一个基于文件的嵌入式关系数据库管理系统。SQLite在设计时考虑到了资源占用和运行效率,所以非常适合在移动设备上使用。下面将详细介绍如何使用Android SQLite数据库。 1. 创建数据库 首先需要创建一个SQLite数据库,通过SQLiteOpenHelper类来创建,传入的参数主要是数据库版本号和数据库名称。在SQLiteOpenHelper的子类中重写onCreate方法来创建表格和一些初始化操作。 2. 执行SQL语句 在SQLiteOpenHelper的子类中重写onUpgrade方法来执行升级操作,可以通过执行ALTER TABLE语句来修改表格结构,并通过DROP TABLE语句删除表格。除此之外,在应用中也可以通过SQLiteDataBase对象的execSQL方法来执行SQL语句,如插入、删除或修改数据等。 3. 增删改查操作 增加(insert):通过SQLiteDataBase对象的insert方法来实现,在方法中传入表名和map对象,map对象中存储数据的键值对。 删除(delete):同样通过SQLiteDataBase对象的delete方法来实现,传入表名和删除条件。 修改(update):也是通过SQLiteDataBase对象的update方法来实现,同时传入修改的数据及条件。 查询(query):同样通过SQLiteDataBase对象的query方法来实现,传入要查询的表名、查询的列、查询条件等参数即可。 4. 事务操作 SQlite数据库支持事务操作,可以在一组操作中,只要有一个操作出现问题,就可以将之前的操作全部回滚,以保证数据的完整性和一致性。 以上就是android-sqlite数据库的使用方法,当然还有很多细节需要注意,例如:表格的设计、SQL语句的优化等。熟练掌握SQLite的使用,可以帮助开发者更好地管理应用数据,提高应用性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值