Android中SQLiteDatabase操作【附源码】

Android 高手进阶教程(二)之----Android 数据库SQLiteDatabase的使用!! 有两种方法:第一种用命令查看:adb shell ls data/data/com.android.tutor/databases。可以存取简单的数据(int,double,float.etc),它经常用于数据缓存,因为它读取存储简单。第一步:新建一个Android工程,命名为SQLiteDatabaseDemo.2.Android Framework学习指南,助力成为系统级开发高手。5.Android Jetpack从入门到精通,构建高质量UI界面。10.Android零基础入门到精通,高手进阶之路。 阅读详情

  像我们做的很多应用程序及网站一样,基本都是对数据库进行增删改查来实现相应的功能。那么Android开发也一样,不过由于在移动客户端应用,所以不会像sql server、mysql那么复杂,Android应用程序支持本地数据库,SQLiteDatabase,通俗的说就是在手机上我们开发的应用程序中创建一个数据库,然后我们可以在手机上对我们的数据进行增删改查,不过这并不是绝对的,像前段时间我们开发一个小组OA,需要多人使用,功能简单,但需要大家连接到一个数据库中进行数据读取操作,所以这种情况下就要考虑到用mysql这样的数据库,最后选择了用php操作后台,然后然会Android进行数据处理,不过对于我们使用的2G网络很多程度上对速度还是有影响的。缓存这一块接触的比较少,计划等到Android这一块学的差不多了再研究其稍底层的一些开发。

  这篇文章主要向大家分享如何操作SQLiteDatabase。 

  当然首先我们要了解SQLiteDatabase,它具有很多优点:

SQLite特性:

    1. 轻量级

    2. 独立性

    3. 隔离性

        SQLite数据库中所有的信息(比如表、视图、触发器等)都包含在一个文件内,方便管理和维护。

    4. 跨平台

    5. 多语言接口

    6. 安全性

        SQLite数据库通过数据库级上的独占性和共享锁来实现独立事务处理。这意味着多个进程可以在同一时间从同一数据库读取数据,但只有一个可以写入数据。在某个进程或现成向数据库执行操作之前,必须获得独占锁定。在发出独占锁定以后,其他的读或写操作将不会再发生。

 

创建和打开数据库:

    openOrCreateDatabase(),自动检测是否存在这个数据库,如果存在则打开,否则创建,创建成功会返回一个SQLiteDatabase对象,否则抛出异常FileNotFoundException:

        mSQLiteDatabase = this.openOrCreateDatabase("abc.db",MODE_PRIVATE,null);

创建表:

    execSQL():

        String Create_Table = "Create table table1...";

        mSQLiteDatabase.execSQL(Create_Table);

 

向表中添加数据:

    insert方法需要把数据打包到ContentValues中,ContentValues其实就是一个Map,Key值是字段名称,Value值是字段的值。通过ContentValues的put方法就可以把数据放到ContentValues对象中,然后插入到表中:

        ContentValue cv = new ContentValues();

        cv.put(table_num,1);

        mSQLiteDatabase.insert(TABLE_NAME,null,cv);

 

从表中删除数据:

    delete():

        mSQLiteDatabase.delete("abc.db","where...",null);

 

修改表数据:

    update():

        ContentValues cv = new ContentValues();

        cv.put(TABLE_NUM,3);

        mSQLiteDatabase.update("table1",cv,"num"+"="+Integer.toString(0),null);

 

  当然,插入、删除和修改操作也可以通过execSQL(sql)方法来实现。

 

关闭数据库:

        mSQLiteDatabase.close();

 

删除指定表:

        mSQLiteDatabase.execSQL("DROP TABLE table1");

 

删除数据库:

        this.deleteDatabase("abc.db");

 

查询表中的某条记录:

        通过Cursor类实现,当使用SQLiteDatabase.query()方法时,会得到一个Cursor对象,Cursor指向的就是每一条数据。它提供了很多有关查询的方法:

            

方法  

说明

move

以当前位置为参考,将Cursor移动到指定的位置,成功返回true

moveToPosition

将Cursor移动的指定的位置,返回boolean

moveToNext

将Cursor向前移动一个位置,返回boolean

moveToLast

将Cursor向后移动一个位置,返回boolean

moveToFirst

将Cursor移动的第一行,返回boolean

isBeforeFirst

返回Cursor是否指向第一项数据之前

isAfterLast

返回Cursor是否指向最后一项数据之后

isClosed

返回Cursor是否关闭

isFirst

返回Cursor是否指向第一项数据

isLast

返回Cursor是否指向最后一项数据

isNull

返回指定位置的值是否为null

getCount

返回总的数据项数

getInt

返回当前行指定索引的数据

 例如:

        Cursor cur = mSQLiteDatabase.rawQuery("select * from table",null);

        if(cur != null)

        {

            if(cur.moveToFirst())

            {

                do{

                    int numColumn = cur.getColumnIndex("num");

                    int num = cur.getInt(numColumn);

                  }while(cur.moveToNext());

            }

        }

     使用SQLiteDatabase数据库后要及时关闭,否则可能会抛出SQLiteException异常。    

 

上面的方法像大部分基础语法书上一样直接执行sql语句的形式,那么在Android中为了简化用户操作以及提高性能,Android系统提供了SQLiteOpenHelper,封装了常用的数据库操作方法。利用它我们可以很轻松的完成对数据库的增删改查。  

 首先我们创建一个DBHelper类继承SQLiteOpenHelper,用它来完成数据库的初始化工作:创建数据库,创建表等操作。

他包含一些借口方法,在下面的注释里已经注释的很详细,就不再罗嗦。

 1 package com.example.core;
 2 
 3 import android.content.Context;
 4 import android.database.sqlite.SQLiteDatabase;
 5 import android.database.sqlite.SQLiteDatabase.CursorFactory;
 6 import android.database.sqlite.SQLiteOpenHelper;
 7 
 8 public class DBHelper extends SQLiteOpenHelper{
 9 
10     public DBHelper(Context context) {
11         //创建数据库名为march_test.db的数据库
12         super(context,"march_test.db",null,1);
13     }
14 
15     /* (non-Javadoc)
16      * 数据库每次被创建时调用
17      * @see android.database.sqlite.SQLiteOpenHelper#onCreate(android.database.sqlite.SQLiteDatabase)
18      */
19     @Override
20     public void onCreate(SQLiteDatabase db) {
21         //创建数据库表
22         String create_sql = "CREATE TABLE student(id integer primary key autoincrement," +
23                 "name varchar(20),age integer not null)";
24         db.execSQL(create_sql);
25     }
26 
27     /* (non-Javadoc)
28      * 版本号发生变化时执行
29      * @see android.database.sqlite.SQLiteOpenHelper#onUpgrade(android.database.sqlite.SQLiteDatabase, int, int)
30      */
31     @Override
32     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
33         // TODO Auto-generated method stub
34         String alter_sql = "ALTER TABLE student ADD money integer";
35         db.execSQL(alter_sql);
36     }
37     
38 }

  通过实例化这个类,可以创建一个名为march_test.db的数据库。包含数据表student。可以文件系统中看到:

  路径为data/data/包名/databases/数据库名:

    

 

  这种db格式的数据库在这里给大家推荐一个非常好用的工具SQLite Expert Professional,非常好用,在网上也很好找到。他mysql workbench等数据库可视化工具一样给我们提供了可视化数据库操作,软件界面如下:

    

  我们可以把我们创建的表在文件系统中导出来然后放到这里查看。

 

  首先要声明我们要操作的数据类型类:

 1 package com.example.sqllite;
 2 
 3 public class Student{
 4     
 5     private Integer id;
 6     private String name;
 7     private Integer age;
 8     
 9     public Student(Integer id, String name, Integer age) {
10         super();
11         this.id = id;
12         this.name = name;
13         this.age = age;
14     }
15     
16     public Student(String name , Integer age){
17         super();
18         this.name = name;
19         this.age = age;
20     }
21 
22     public Integer getId() {
23         return id;
24     }
25     
26     public void setId(Integer id) {
27         this.id = id;
28     }
29     
30     public String getName() {
31         return name;
32     }
33     
34     public void setName(String name) {
35         this.name = name;
36     }
37     
38     public Integer getAge() {
39         return age;
40     }
41     
42     public void setAge(Integer age) {
43         this.age = age;
44     }
45 
46     @Override
47     public String toString() {
48         return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
49     }
50     
51 }

 

 

下面要编写对数据库的增删改查类,它继承我们上面创建的SQLiteOpenHelper为基类的DBHelper类:

  1 package com.example.core;
  2 
  3 import java.util.ArrayList;
  4 import java.util.List;
  5 
  6 import android.content.Context;
  7 import android.database.Cursor;
  8 import android.database.sqlite.SQLiteDatabase;
  9 
 10 import com.example.sqllite.Student;
 11 
 12 /**
 13  * @author fanchangfa
 14  *数据库操作类
 15  *增删改查
 16  *获取分页查询数据
 17  *获取表中记录总数
 18  */
 19 public class DbServer{
 20     
 21     private DBHelper dbhelper;
 22     
 23     public DbServer(Context context){
 24         this.dbhelper = new DBHelper(context);        
 25     }
 26     
 27     /**
 28      *  增加信息
 29      * @param student    增加的学生信息
 30      */
 31     public void add(Student student){
 32         SQLiteDatabase db = dbhelper.getWritableDatabase();
 33         db.execSQL("insert into student(name , age) values(?,?)",
 34                 new Object[]{student.getName(),student.getAge()});
 35     }
 36     
 37     /**
 38      * 删除信息
 39      * @param id    要删除的学生id
 40      */
 41     public void delete(Integer id){
 42         SQLiteDatabase db = dbhelper.getWritableDatabase();
 43         db.execSQL("delete from student where id = ?",new Object[]{id});
 44     }
 45     
 46     /**
 47      * 修改指定id的学生信息
 48      * @param stu    包括修改学生的id,以及修改的信息
 49      */
 50     public void alter(Student stu){
 51         SQLiteDatabase db = dbhelper.getWritableDatabase();
 52         db.execSQL("update student set name=?,age=? where id=?",
 53                 new Object[]{stu.getName(),stu.getAge(),stu.getId()});
 54     }
 55     
 56     /**
 57      * 查找信息
 58      * @param id    要查找的学生id
 59      */
 60     public Student find(Integer id){
 61         SQLiteDatabase db = dbhelper.getReadableDatabase();
 62         Cursor cursor = db.rawQuery("select * from student where id = ?",new String[]{id.toString()});
 63         
 64         if(cursor.moveToFirst())    //如果查询结果集中有数据,将游标指向第一条记录
 65         {
 66             int sid = cursor.getInt(cursor.getColumnIndex("id"));
 67             String name = cursor.getString(cursor.getColumnIndex("name"));
 68             int age = cursor.getInt(cursor.getColumnIndex("age"));
 69             
 70             return new Student(sid , name , age);
 71         }
 72         
 73         cursor.close();
 74         
 75         return null;
 76     }
 77     
 78     /**
 79      * 分页查询数据
 80      * @param start    分页开始记录数
 81      * @param end    分页结束记录数
 82      * @return        查询结果集
 83      */
 84     public List<Student> page(int start , int end){
 85         SQLiteDatabase db = dbhelper.getReadableDatabase();
 86         List<Student> page = new ArrayList<Student>();
 87         Cursor cur = db.rawQuery("select id,name,age from student order by id limit ?,?",
 88                 new String[]{String.valueOf(start),String.valueOf(end)});
 89         
 90         while(cur.moveToNext()){
 91             int id = cur.getInt(cur.getColumnIndex("id"));
 92             String name = cur.getString(cur.getColumnIndex("name"));
 93             int age= cur.getInt(cur.getColumnIndex("age"));
 94             page.add(new Student(id,name,age));
 95         }
 96         
 97         cur.close();
 98         
 99         return page;
100     }
101     
102     /**
103      * 返回指定分页数据
104      * @param start
105      * @param end
106      * @return Cursor型数据
107      */
108     public Cursor curpage(int start , int end){
109         SQLiteDatabase db = dbhelper.getReadableDatabase();
110         Cursor cur = db.rawQuery("select id as _id,name,age from student order by id limit ?,?",
111                 new String[]{String.valueOf(start),String.valueOf(end)});
112         
113         cur.moveToFirst();
114         
115         return cur;
116     }
117     
118     /**
119      * 获取表记录总数
120      * @return
121      */
122     public long getCount(){
123         SQLiteDatabase db = dbhelper.getReadableDatabase();
124         
125         Cursor cur = db.rawQuery("select count(*) from student",null);
126         cur.moveToFirst();
127         
128         long count = cur.getLong(0);
129         
130         cur.close();
131         
132         return count;
133     }
134     
135     /**
136      * 执行事务
137      */
138     public void transaction(){
139         SQLiteDatabase db = dbhelper.getWritableDatabase();
140         db.beginTransaction();
141         
142         try{
143             db.execSQL("update student set age = 21 where id =5");
144             db.execSQL("update student set age= 22 where id=6");
145             db.setTransactionSuccessful();
146             //事务默认有commit、rollback,默认为False,即非提交状态,需要设置为commit
147         }
148         finally{
149             db.endTransaction();
150         }
151         
152     }
153 }

 

 

具体操作代码中已经注释完善,可以进行试验。

下面要对其进行测试:

编写测试单元如下:

 1 package com.example.test;
 2 
 3 import java.util.List;
 4 
 5 import com.example.core.DbServer;
 6 import com.example.sqllite.Student;
 7 
 8 import android.test.AndroidTestCase;
 9 import android.util.Log;
10 
11 /**
12  * @author fanchangfa
13  * 数据库操作单元测试
14  * 测试DbServer中数据的增删改查
15  *
16  */
17 public class DbServerTest extends AndroidTestCase{
18     
19     //控制台打印信息标志
20     private static final String TAG = "SQLtest";
21     
22     /**
23      * 添加数据测试
24      */
25     public void addTest(){
26         DbServer dbserver = new DbServer(this.getContext());
27         for(int i = 0 ; i<20 ; i++)
28         {
29             Student stu = new Student("fanchangfa"+i,20);
30             dbserver.add(stu);
31         }
32     }
33     
34     public void deleteTest(){
35         DbServer dbserver = new DbServer(this.getContext());
36         dbserver.delete(2);
37     }
38     
39     public void alterTest(){
40         DbServer dbserver = new DbServer(this.getContext());
41         Student stu = dbserver.find(3);
42         stu.setName("liuzihang");
43         stu.setAge(25);
44         dbserver.alter(stu);
45     }
46     
47     /**
48      * 测试数据库查找
49      * 根据提供id返回记录结果 
50      */
51     public void findTest(){
52         DbServer dbserver = new DbServer(this.getContext());
53         Student stu = dbserver.find(5);
54         Log.i(TAG, stu.toString());
55     }
56     
57     /**
58      * 数据库查找分页测试 
59      */
60     public void findpage(){
61         DbServer dbserver = new DbServer(this.getContext());
62         List<Student> students = dbserver.page(0, 8);
63         
64         for(Student stu : students){
65             Log.i(TAG,stu.toString());
66         }
67         
68     }
69     
70     /**
71      * 执行事务测试
72      */
73     public void transactionTest(){
74         DbServer dbserver = new DbServer(this.getContext());
75         dbserver.transaction();
76     }
77     
78 }

 

经验证,没有问题,由于此文件系统和操作比较麻烦,我将自己写的实例放到这里共大家下载,此实例中包括数据库的操作以及SQLite中事物的使用,以及将在下一篇写的关于ListView显示数据的几种方法,界面虽然很难看,不过这只是demo,希望多多谅解,有问题多多交流。希望这里会是我们拥有共同爱好的程序员们相互交流共同进步的平台,而不是只是为了增加访问量而将文章放在这里。

 

Android 一篇很啰嗦的SQLite入门知识总结 版权声明:本文为博主原创文章,未经博主允许不得转载 Github:github.com/AnliaLee 大家要是看到有错误的地方或者有啥好的建议,欢迎留言评论 前言 博主这两天心血来潮准备回顾下SQLite的知识,然而网上查找资料的过程是痛苦的,因为很少有一篇博客能把SQLite的入门知识讲全的,得好几篇合着来看才行,因此我的浏览器选项卡基本上是这样的 正所谓自己动手丰衣 阅读详情

相关推荐

Android数据存储—— SQL Database

对于一些结构非常明确的数据,或者是重复性比较高的数据,把它存储在数据库中是最好的选择。比方说是联系人,每一个联系人都会有姓名,手机号,电话,邮箱,住址等信息,当然可能会有一些字段存储的时候会是空的。对于每一个联系人来说,结构都是十分明确清晰的,这样,利用数据库来存储信息是比较合适,也是比较方便的。

1266

Android 操作SQLite基本用法(SQLiteDatabase)

一、SQLite数据类型 一般数据采用的固定的静态数据类型,而SQLite采用的是动态数据类型,会根据存入值自动判断。SQLite具有以下五种常用的数据类型: NULL: 这个值为空值 VARCHAR(n):长度不固定且其最大长度为 n 的字串,n不能超过 4000。 CHAR(n):长度固定为n的字串,n不能超过 254。 INTEGER: 值被标识为整数,依据值的大小可以依次被存储为1,2,3...

这个男孩不简单的博客 3万+

SQLiteOpenHelper/SQLiteDatabase/Cursor源码解析

我们在使用android提供的SQLite存储数据的时候,就会用到SQLiteOpenHelper和SQLiteDataBase,但查询数据的时候会得到一个Cursor对象,这里我们将深入android提供的关于SQLite的封装以原理。 SQLiteOpenHelper ——封装管理数据库的创造和版本管理类 主要封装了数据库的创建和获取的方法,一般继承该类实现onCreate()、o

Y_ZhiWen的博客 6365

Android之SQLiteDatabase

文章目录一、SQLiteDatabase概念二、SQLiteDatabase对象的操作 一、SQLiteDatabase概念 用于管理和操作SQLite数据库,几乎所有的数据库操作,最终都将由这个类完成 getReadableDatabase() 返回的就是SQLiteDatabase SQLiteDatabase db=helper.getReadableDatabase(); 获取该类的对...

qq_39438055的博客 1491

Cisco思科 电子科技大学计算机网络 SRWE 期末技能考试 (PTSA)

电子科技大学2024春_SRWE_计算机网络系统 SRWE 期末技能考试 (PTSA)

2301_76745065的博客 5094

基于Windows环境的OGG远程抽取异常(经典模式)OGG-02830 Formatting error

MOS提供的解决方法,根据MOS的提示是由于使用的OGG版本太新了,经典模式下已经弃用了这种远程抽取方式。问题:Windows环境下启用远程抽取ADG备库的数据,在启动抽取进程的时候出现如下错误提示。

Mrzhou的博客 380

android SQLiteDatabase源码解析

源于包android.database.sqlite.SQLiteDatabase 首先看一下继承和实现了那些基类和接口 SQLiteDatabase extends SQLiteClosable implements Closeable Closeable extends AutoCloseable interface AutoCloseable //java. langv

光英的记忆博客 807

Data+AI━━数仓建模的智能进化之路!

Data+AI━━数仓建模的智能进化之路!

ith321的博客 1745

Android中SQLiteDatabase操作

Android中SQLiteDatabase操作【附源码】   像我们做的很多应用程序及网站一样,基本都是对数据库进行增删改查来实现相应的功能。那么Android开发也一样,不过由于在移动客户端应用,所以不会像sql server、mysql那么复杂,Android应用程序支持本地数据库,SQLiteDatabase,通俗的说就是在手机上我们开发的应用程序中创建一个数据库,然后我

Gxy1115029725的博客 1153

等保测评-达梦数据库

一般适用于等保测评

m0_54146694的博客 1297

Vue - 萤石云监控 ezuikit 视频实例销毁方案,解决使用stop方法无法销毁EZUIKit实例或销毁后依然占用内存并且监控画面依然有声音问题(解决页面多个监控摄像头画面同时播放,翻页或关闭页

vue2,vue3,萤石,监控摄像头,萤石云销毁视频实例,退出页面销毁,stop销毁原视频流,占用内存怎么办,销毁后视频依旧在后台播放有声音,销毁视频播放器,页面上有多个视频画面怎么销毁某一个,stop方法不生效怎么办,浏览器非常卡,dom销毁,ezuikit-js萤石云播放器Vue中使用beforeDestory销毁播放器实例,调用萤石云ezuikit-js的视频对象销毁,vue使用萤石云监控视频录像回放,不销毁实例会出现离开页面后依旧有监控声音并且占内存问题,不好使,页面崩了,崩溃,视频监控太多,没有用

🏆 前端领域优质创作者 1万+

android电话通讯录源码,简单安卓手机通讯录 源码下载

package com.zpx.contact;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;public class ContactDao {privat...

weixin_39895096的博客 1095

【PSINS工具箱】159联邦滤波器代码优化与注释、运行结果、文字性解释。15维状态量、9维观测量,联邦滤波与集中式滤波对比。完整代码可订阅后查看

基于工具箱的联邦滤波代码,15维状态量、9为观测量

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 486

android-SQLiteDatabase 和 SQLite 数据库

最近在看android 平台的源码,下面总结一下SQLiteDataBase与其底层的SQLLite 数据库的关系,上层的SQLiteDataBase是如何调用到底层的SQLite数据库操作。   SQLiteDataBase是android framework层用于封装SQLlite数据库操作的类,app可以直接使用SQLiteDataBase在android 平台上使用数据库。开发者可以使

train的专栏 1484

Chrome DevTools MCP 实战完整教程

本教程介绍了Chrome DevTools MCP(Model Context Protocol)在智能Web测试中的应用。该系统通过MCP协议将Chrome开发者工具能力标准化,并与AI结合,提供了统一的测试解决方案。核心功能包括智能自动化、深度调试分析和性能监控优化。教程详细讲解了环境搭建、MCP服务器配置、参数说明及多种工具集(输入自动化、导航、设备仿真、性能分析等)的使用方法。通过mcp-use库的MCPAgent和MCPClient组件,用户可以轻松实现自然语言驱动的浏览器操作和测试流程管理。

blues_C的博客 3805

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Android数据库入门小案例SQLiteOpenHelper和SQLiteDatabase使用

前言这是一次上机实验,对的没错,刚开始没有用数据库,只是使用Intent Bundle传递数据而已,后面又让我们使用数据库存放数据。所以代码都在一起,可能有些代码并没有什么用(经供参考),但是代码量不大,不用担心,数据库的使用并没有开源数据库框架,比如LitePal(代码少,好用),因为还是菜鸟,使用一开始还是先基础,后面可以改良。本着分享学习的心情,话多了,请大家坚持学习。若是措辞不清大家自接看源

路人也是身边人的博客 1153

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Android开发(10)使用SQLiteDatabase操作SQLite数据库实现增删改查(源码)

Android提供了一个名为SQLiteDatabase的类,该类封装了一些操作数据库的API,使用该类可以完成对数据进行添加(Create)、查询(Retrieve)、更新(Update)和删除(Delete)操作(这些操作简称为CRUD)。对SQLiteDatabase的学习,我们应该重点掌握execSQL()和rawQuery()方法。 execSQL()方法可以执行insert、delet

国旭 的专栏 1万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

android sqlite rawquery,SQLiteDatabase query() 和 rawQuery() 的区别

刚才在 优快云 上看见有人问说在 Android SQLiteDatabase 里,query() 和 rawQuery() 方法的区别。对于这种问题,其实最好的办法就是参看源码,结果确实这样,通过源代码,很快就找到了问题的答案了。咱们先看看 query() 是怎么实现的。publicCursorquery(Stringtable,String[]columns,Stringsel...

weixin_39933895的博客 578

SQLiteDatabase数据库操作类CRUD(附源码)

先看界面布局: 主要实现了:调用SQLiteDatabase类的insert(),delete(),update(),query()方法达到对数据库的增/删/改/查/效果。 源码下载: http://pan.baidu.com/share/link?shareid=3314155408&uk=3222976196

从此便有了信仰. 895

android sqlite 分析,Android源码分析------SQLiteDatabase(1)

看了SQLiteDatabase的replace接口的源码,感觉写的很好,有些可以借鉴的地方,记录如下:publiclongreplace(Stringtable,StringnullColumnHack,ContentValuesinitialValues){try{returninsertWithOnConflict(table,nullColumnHack,initi...

weixin_29521135的博客 217

对SqliteDatabase.findEditTable的改进

1. 目的       我们在严谨地操作数据库的时候,总会遇到这种情况,程序重新启动后,已经建立的数据库表,不需再次建立。在项目之初,用到Android本地数据库SQLiteDatabase时候,也遇到了这个情况。遍览其方法,仅有findEditTable可能有此功能,所以做了以下实验: String tableName = ""; tableName= mSqliteDatabase.fin

WDhongquan的专栏 1257

西工大安卓大作业-日记本(源码+实验报告+问题总结)

西工大安卓大作业-日记本(源码+实验报告+问题总结) 去发现同类优质开源项目:https://gitcode.com/ 简介 本项目是西工大安卓课程的大作业,旨在综合运用基于android平台的智能移动终端软件开发技术,设计并实现了一款具备实际应用价值的智能移动终端软件应用——日记本。本软件应用包含了登录、查看日记列表、查看日记内容、搜索日记以及新建日记等多个相互关联的功能,用户界面友好,功能模块...

gitblog_06756的博客 867
上一篇: Android SharedPreferences
下一篇: Andoid 采用ListView三种显示数据列表
fchangfa
博客等级 码龄16年 7粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值