SQLite数据库在Android中的使用
创始人
2024-12-26 03:08:17
0

目录

一,SQLite简介

二,SQLIte在Android中的使用

1,打开或者创建数据库

2,创建表

3,插入数据

4,删除数据

5,修改数据

 6,查询数据

三,SQLiteOpenHelper类

四,SQLite中事务的处理


一,SQLite简介

        SQLite是一个无服务器的零配置的事务性的SQL数据库引擎。无服务器,意味着使用sqlite不需要联网;不需要配置,意味着不需要安装和管理;同时sqlite遵循ACID原则。SQLIte是一款轻型的数据库,占用资源非常低,在嵌入式设备中,可能只需几百k的内存。

二,SQLIte在Android中的使用

        Android中使用SQLiteDatabase代表数据库,并提供了一系列方法来操作数据库。对于常用的增删改查操作,既可以使用execSQL()方法直接执行sql语句,也可以使用Android提供的方法,由于execSQL()方法返回void,无法判断是否执行成功,所以除创建表之外的操作通常使用Android提供的一系列方法。

1,打开或者创建数据库

        使用openOrCreateDatabase()打开或者创建一个数据库,如果数据库存在则打开数据库,反之则创建一个数据库。创建成功则返回SQLiteDatabase对象,否则抛出异常。使用时需提供创建路径和一个游标工厂;

private void initDatabase() {     String filePath = getFilesDir().getAbsolutePath() + "wordDB.db";     DB = SQLiteDatabase.openOrCreateDatabase(filePath, null);     Log.i("DB", "数据库初始化成功!"); }

2,创建表

表的创建可以通过SQLiteDatabase的exexSQL()方法直接执行sql语句来创建;

private void inittable() {     String table = "create table tb_word(" +             "id integer primary key autoincrement," +             "word varchar(20) not null," +             "translation varchar(20) not null);";     DB.execSQL(table); }

3,插入数据

  1. table:所要执行的表名;
  2. nullColumnHack:在此处指定一个列名,当数据为空时,会向该列插入一个null。一般设为null;
  3. values:要插入的内容;
private void insert() {     //所要插入的数据     ContentValues contentValues = new ContentValues();     contentValues.put("word", word);     contentValues.put("translation", translation);     //执行插入     long id = wordDB.insert("tb_word", null, contentValues);     if(id > 0){         Toast.makeText(this, "录入成功!", Toast.LENGTH_SHORT).show();     } }

4,删除数据

  1.  table:表名;

  2. whereClause:修改条件,也就是sql语句中where后的内容,可以使用占位符,如"id=?";

  3. whereArgs:修改条件参数,当whereClause使用占位符时,在此处填入条件参数,形式为字符串数组;

private void delete() {     //删除条件     String whereClause = "word = ?";     //删除条件参数     String[] whereArgs = {String.valueOf(words.getWord())};     //执行删除     int row = wordDB.delete("tb_word", whereClause, whereArgs);     if(row > 0){         Log.i("delete", "删除成功");     }else {         Log.i("delete", "删除失败");     } }

5,修改数据

  1. table:表名;
  2. values:修改的内容;
  3. whereClause:修改的条件,与delete的一致;
  4. whereArgs:修改条件参数; 
private void update(){     //修改的内容     ContentValues values = new ContentValues();     values.put("translation", translation);     //修改条件     String whereClause = "word=?";     //修改条件参数     String[] whereArgs = {word};     //执行修改     int row = wordDB.update("tb_word", values, whereClause, whereArgs);     if(row > 0){         Log.i("update", "更新成功");     }else {         Log.i("update", "更新失败");     } }

 6,查询数据

        在Android中查询数据是通过Cursor类来实现的,当我们使用SQLiteDatabase.query()方法时,会得到一个Cursor对象,Cursor指向的就是每一条数据。

  1. table:表名;
  2. columns:列名称数组,指定从哪些列寻找;
  3. selection:查询的条件,相当于where后的内容;
  4. selectionArgs:查询条件的参数;
  5. groupBy:分组列;
  6. having:分组条件;
  7. orderBy:排序列;
  8. limit:分页查询限制;

Cursor游标类常用方法:

private void searchWord() {     //查询条件     String selection = "word=?";     //查询条件参数     String[] selectionArgs = { String.valueOf(word) };     //执行查询,获取游标类     Cursor cursor = wordDB.query("tb_word", null, selection, selectionArgs , null, null, null);     StringBuffer result = new StringBuffer();     while(cursor.moveToNext()){         int idOfWord = cursor.getColumnIndex("word");         String word1 = cursor.getString(idOfWord);         int idOfTranslation = cursor.getColumnIndex("translation");         String translation = cursor.getString(idOfTranslation);         result.append(word1 + ": " + translation + "\n");     }     tv_words.setText(result.toString()); }

三,SQLiteOpenHelper类

        Android提供SQLiteOpenHelper类来管理数据库。主要负责数据库的创建版本更新,一般情况通过创建它的子类并扩展onCreate()onUpgrade()方法来实现。 

SQLiteOpenHelper类常用方法:

  1. abstract void onCreate():第一次创建数据库时回调;
  2. abstract void onUpgrade():数据库版本更新时回调;
  3. SQLiteDatabase  getWritableDatabase():获得可读/写的数据库;
  4. SQLiteDatabase  getReadableDatabase():获得可读的数据库;
  5. void close():关闭所有打开的SQLiteDatabase;

 (1)创建SQLiteOpenHelper的子类,并重写方法:

public class MySqliteHelper extends SQLiteOpenHelper {      public MySqliteHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {         super(context, name, factory, version);     }      @Override     public void onCreate(SQLiteDatabase db) {         String table = "create table tb_word(" +                 "id integer primary key autoincrement," +                 "word varchar(20) not null," +                 "translation varchar(20) not null);";         db.execSQL(table);     }      @Override     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {      } }

(2)通过子类来创建数据库:

private void initDatabaseHelper() {     mySqliteHelper = new MySqliteHelper(             this,             "wordDB.db",             null,             1     );      SQLiteHelperUtil.wordDB = mySqliteHelper.getWritableDatabase();     Log.i("wordDB", "数据库初始化成功!"); }

四,SQLite中事务的处理

SQLite采用如下方法来处理事务:

  1. beginTransaction():开启事务;
  2. setTransactionSuccessful():标记事务成功;
  3. endTransaction():提交事务,当事务执行失败时,可调用此方法回滚事务;
db.beginTransaction(); try {         // 执行事务中的sql语句         db.setTransactionSuccessful(); } finally {         db.endTransaction();     } }

相关内容

热门资讯

推荐一款!金花房卡怎么购买荣耀... 荣耀联盟是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:【3329006910】或QQ:332900...
玩家攻略,金花房卡官网桃花大厅... 玩家攻略,金花房卡官网桃花大厅/房卡怎么购买Sa9Ix苹果iPhone 17手机即将进入量产阶段。有...
ia实测“微信拼三张房卡怎么获... 金牛座金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡...
科普!微信上打炸金花房卡找谁买... 微信游戏中心:大牌九房卡,添加微信【55051770】,进入游戏中心或相关小程序,搜索“微信大牌九房...
头条推荐!牛牛房卡制作链接火星... 您好!微信火星大厅/新道游大厅链接获取房卡可以通过以下几种方式购买: 1.微信渠道:(火星大厅/新...
终于知道”新好游低价获取分享房... 第二也可以在游戏内商城:在游戏界面中找到 “微信金花,斗牛链接房卡”“商城”选项,选择房卡的购买选项...
IA解析/金花微信链接市场价格... 今 日消息,毛豆互娱房卡添加微信33549083 苹果今日发布了 iOS 16.1 正式版更新,简单...
ia攻略/金花房卡批发价玄灵大... 玄灵大厅房卡更多详情添加微:33549083、 2、在商城页面中选择房卡选项。 3、根...
科普!微信群打金花链接房卡,微... 微信游戏中心:牛牛房卡,添加微信【33903369】,进入游戏中心或相关小程序,搜索“微信牛牛房卡”...
终于知道”美人有挂吗“新道游房... 终于知道”美人有挂吗“新道游房间卡怎么购买微信房卡充值 添加房卡批售商:微【113857776】复制...
一分钟推荐“如何在微信上购买金... 新荣耀是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来享...
玩家攻略,游戏推荐斗牛房卡出售... 微信游戏中心:海贝大厅/新天道房卡在哪里买打开微信,添加客服微信【88355042】,进入游戏中心或...
科普!创建微信链接金花房卡,微... 微信游戏中心:牛牛房卡,添加微信【8488009】,进入游戏中心或相关小程序,搜索“微信牛牛房卡”,...
终于知道”超稳无敌哪里有详细房... 第二也可以在游戏内商城:在游戏界面中找到 “微信金花,斗牛链接房卡”“商城”选项,选择房卡的购买选项...
正版授权!金花房卡专卖店华山大... 您好!微信华山大厅大厅链接获取房卡可以通过以下几种方式购买: 1.微信渠道:(华山大厅)大厅介绍:...
炸金花房卡专卖店联系方式/微信... 微信炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:15984933许多玩家在游戏中会购买房卡...
终于知道”新众亿房卡购买“金花... 终于知道”新众亿房卡购买“金花房卡哪里是有卖 微信牛牛房卡客服微信号微信游戏中心打开微信,添加客服【...
科普!微信链接金花房卡在哪买的... 微信游戏中心:拼三张房卡,添加微信【55051770】,进入游戏中心或相关小程序,搜索“微信拼三张房...
房卡必备教程“炸金花房卡专卖店... 皇豪互娱是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来...
重大通报,游戏微信牛牛房卡水仙... 水仙大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:【3329006910】或QQ:332900...