基本命令,数据存取之SQLite浅析

在Android开垦中SQLite起着很要紧的机能,互连网SQLite的学科有无数众多,不过那个教程大大多都讲得不是很圆满。本身总计了一些SQLite命令,借着论坛的大赛,跟大家享受共享的。

一.SQLite的介绍
1.SQLite简介
SQLite是意气风发款轻型的数据库,是服从ACID的关联式数据库管理连串,它的设计指标是停放
式的,何况近日早就在好些个嵌入式产品中选取了它,它占用能源相当低,在嵌入式设备中,只怕只须要几百K的内部存款和储蓄器就够了。它能够帮助Windows/Linux/Unix等等主流的操作系统,同期能够跟相当多程序语言相结合,举例Tcl、PHP、Java、C++、.Net等,还可能有ODBC接口,同样比起
Mysql、PostgreSQL这两款开源世界闻明的数据库处理连串来说,它的管理速度比他们都快。
2.SQLite的特点:
轻量级
SQLite和C/S形式的数据库软件分裂,它是进度内的数据库引擎,由此子虚乌有数据库的顾客端和服务器。使用SQLite日常只要求带上它的一个动态
库,就能够享用它的成套作用。并且十二分动态库的尺寸也挺小,以版本3.6.11为例,Windows下487KB、Linux下347KB。
不需要”安装”
SQLite的着力引擎本人不依赖于第三方的软件,使用它也不必要”安装”。有一点类似这种浅米灰软件。
单纯文件
数据库中兼有的新闻(举例表、视图等)都包蕴在贰个文本内。这么些文件能够率性复制到别的目录或别的机器上。
跨平台/可移植性
除了主流操作系统
windows,linux之后,SQLite还补助其余一些有的时候用的操作系统。
弱类型的字段
大器晚成律列中的数据足以是区别连串
开源
这一个相信大家都懂的!
3.SQLite数据类型
貌似数量利用的原则性的静态数据类型,而SQLite采纳的是动态数据类型,会依据存入值自动推断。SQLite具备以下三种常用的数据类型:
NULL: 这么些值为空值
VARCHA牧马人(n):长度不稳固且其最大尺寸为 n 的字串,n无法超过 5000。
CHAENVISION(n):长度固定为n的字串,n不可能当先 254。
INTEGECR-V: 值被标识为整数,依靠值的尺寸能够依次被寄存为1,2,3,4,5,6,7,8.
REAL: 全数值都以浮动的数值,被累积为8字节的IEEE浮动标识序号.
TEXT: 值为文本字符串,使用数据库编码存款和储蓄(TUTF-8, UTF-16BE or
UTF-16-LE).
BLOB: 值是BLOB数据块,以输入的数目格式进行仓库储存。怎样输入就如何存款和储蓄,不改换格式。
DATA :包含了 年份、月份、日期。
TIME: 包含了 小时、分钟、秒。
低首下心学过数据库的童鞋对那些数据类型都不生分的!!!!!!!!!!
二.SQLiteDatabase的介绍
Android提供了创办和是用SQLite数据库的API。SQLiteDatabase代表七个数据库对象,提供了操作数据库的有个别措施。在Android的SDK目录下有sqlite3工具,大家能够利用它创立数据库、创制表和实施一些SQL语句。上面是SQLiteDatabase的常用方法。
**SQLiteDatabase的常用方法 **

一.SQLite的介绍

冠亚体育手机网站 1

1.SQLite简介

Paste_Image.png

SQLite是意气风发款轻型的数据库,是服从ACID的关联式数据库管理连串,它的设计指标是松开 
式的,并且近年来少年老成度在众多嵌入式产品中使用了它,它占用能源异常低,在嵌入式设备中,恐怕只供给几百K的内部存款和储蓄器就够了。它能够援救Windows/Linux/Unix等等主流的操作系统,同偶然间能够跟非常多程序语言相结合,比如Tcl、PHP、Java、C++、.Net等,还恐怕有ODBC接口,同样比起
Mysql、PostgreSQL那五款开源世界有名的数据库管理种类来说,它的管理速度比她们都快。

1、打开可能创建数据库
在Android 中以使用SQLiteDatabase的静态方法openOrCreateDatabase(String
path,SQLiteDatabae.CursorFactory
factory)展开可能创设二个数据库。它会活动去检验是还是不是存在这里个数据库,即使存在则展开,不设有则创立二个数据库;创立成功则赶回七个SQLiteDatabase对象,不然抛出相当FileNotFoundException。
上面是制造名称为“stu.db”数据库的代码:
db=SQLiteDatabase.openOrCreateDatabase(“/data/data/com.lingdududu.db/databases/stu.db”,null);

2.SQLite的特点:

2、创建表
创设一张表很简短。首先,编写创造表的SQL语句,然后,调用SQLiteDatabase的execSQL()方法来实行SQL语句便能够创制一张表了。
下边包车型客车代码成立了一张客户表,属性列为:_id(主键而且自动扩张)、sname(学生姓名)、snumber(学号)

轻量级

private void createTable(SQLiteDatabase db){  

  //创建表SQL语句  
  String stu_table="create table usertable(_id integer primary key autoincrement,sname text,snumber text)";  

  //执行SQL语句   
  db.execSQL(stu_table);  
}

SQLite和C/S情势的数据库软件不一样,它是经过内的数据库引擎,由此空头支票数据库的客户端和服务器。使用SQLite平常只必要带上它的多少个动态 
库,就能够享受它的百分百效应。何况非常动态库的尺寸也挺小,以版本3.6.11为例,Windows下487KB、Linux下347KB。

冠亚体育手机网站,3、插入数据
插入数占领三种形式:
①SQLiteDatabase的insert(String table,String nullColumn哈克,ContentValues
values)方法,参数意气风发是表名称,参数二是空驶列车的暗中认可值,参数三是ContentValues类型的三个卷入了列名称和列值的Map;
②编写制定插入数据的SQL语句,直接调用SQLiteDatabase的execSQL()方法来进行
首先种方法的代码:

不需要”安装”

private void insert(SQLiteDatabase db) {  

//实例化常量值  
ContentValues cValue = new ContentValues();  

//添加用户名  
cValue.put("sname","xiaoming");  

//添加密码  
cValue.put("snumber","01005");  

//调用insert()方法插入数据  
db.insert("stu_table",null,cValue);  
}  

SQLite的基本引擎本人不依据第三方的软件,使用它也无需”安装”。有一点类似这种土红软件。

第三种方法的代码:

纯净文件 

private void insert(SQLiteDatabase db){

数据库中有所的音信(比方表、视图等)都含有在三个文件内。这一个文件能够自便复制到别的目录或另外机器上。

 //插入数据SQL语句  
 String stu_sql="insert into stu_table(sname,snumber) values('xiaoming','01005')";  

//执行SQL语句  
 db.execSQL(sql);  

跨平台/可移植性

}

除去主流操作系统
windows,linux之后,SQLite还帮忙其余一些不时用的操作系统。

4、删除数据
删去数据也会有三种情势:
①调用SQLiteDatabase的delete(String table,String whereClause,String[]
whereArgs)方法,参数黄金时代是表名称,参数二是剔除条件,参数三是去除条件值数组;
②编写制定删除SQL语句,调用SQLiteDatabase的execSQL()方法来实行删除。
第朝气蓬勃种艺术的代码:

弱类型的字段

private void delete(SQLiteDatabase db) {  

   //删除条件  
   String whereClause = "_id=?";  

   //删除条件参数  
   String[] whereArgs = {String.valueOf(2)};  

   //执行删除  
   db.delete("stu_table",whereClause,whereArgs);   
}  

后生可畏致列中的数据可以是众口难调品类

其次种办法的代码:

开源

private void delete(SQLiteDatabase db) {  

   //删除SQL语句  
   String sql = "delete from stu_table where _id  = 6";  

   //执行SQL语句  
   db.execSQL(sql);  
}  

本条相信我们都懂的!!!!!!!!!!!!

5、修改数据
修改数占有二种办法:
①调用SQLiteDatabase的update(String table,ContentValues values,String
whereClause, String[]
whereArgs)方法。参数是表名称,参数是更行列ContentValues类型的键值对(Map),参数是翻新规范(where字句),参数是翻新标准数组。
②编纂更新的SQL语句,调用SQLiteDatabase的execSQL施行更新。
首先种办法的代码:

3.SQLite数据类型

private void update(SQLiteDatabase db) {  

//实例化内容值  
ContentValues values = new ContentValues();  

//在values中添加内容   
values.put("snumber","101003");  

//修改条件   
String whereClause = "id=?";  

//修改添加参数  
String[] whereArgs={String.valuesOf(1)};  

//修改  
db.update("usertable",values,whereClause,whereArgs);   
}  

貌似数量利用的一定的静态数据类型,而SQLite接纳的是动态数据类型,会基于存入值自动推断。SQLite具有以下五种常用的数据类型:

第三种艺术的代码:

NULL: 那么些值为空值

private void update(SQLiteDatabase db){  

//修改SQL语句  
String sql = "update stu_table set snumber = 654321 where id = 1";  

//执行SQL  
db.execSQL(sql);   
}  

VARCHA景逸SUV(n):长度不稳定且其最大尺寸为 n 的字串,n不可能超过 伍仟。

6、查询数据
在Android中询问数据是因此Cursor类来落成的,当大家运用SQLiteDatabase.query()方法时,会获得叁个Cursor对象,Cursor指向的正是每一条数据。它提供了成千上万关于查询的方式,具体方法如下:public
Cursor query(String table,String[] columns,String selection,String[]
selectionArgs,String groupBy,String having,String orderBy,String
limit);
逐一参数的含义表明:
①table:表名称
②columns:列名称数组
③selection:条件字句,相当于where
④selectionArgs:条件字句,参数数组
⑤groupBy:分组列
⑥having:分组条件
⑦orderBy:排序列
⑧limit:分页查询范围
⑨Cursor:重返值,也正是结果集ResultSet
Cursor是二个游标接口,提供了遍历查询结果的艺术,如运动指针方法move(),得到列值方法getString()等.
Cursor游标常用方法

CHATiggo(n):长度固定为n的字串,n无法超过 254。

冠亚体育手机网站 2

INTEGEMurano: 值被标记为整数,凭借值的尺寸能够依次被积累为1,2,3,4,5,6,7,8.

Paste_Image.png

REAL: 全部值都以浮动的数值,被积累为8字节的IEEE浮动标志序号.

上面正是用Cursor来查询数据库中的数据,具体代码如下:

TEXT: 值为文本字符串,使用数据库编码存款和储蓄(TUTF-8, UTF-16BE or UTF-16-LE).

private void query(SQLiteDatabase db)  
{  

   //查询获得游标  
   Cursor cursor = db.query   ("usertable",null,null,null,null,null,null);  

   //判断游标是否为空  
   if(cursor.moveToFirst() {  

   //遍历游标  
   for(int i=0;i<cursor.getCount();i++){  

cursor.move(i);  

//获得ID  
int id = cursor.getInt(0);  

//获得用户名  
String username=cursor.getString(1);  

//获得密码  
String password=cursor.getString(2);  

//输出用户信息  
System.out.println(id+":"+sname+":"+snumber);  
   }  
   }   
}  

BLOB: 值是BLOB数据块,以输入的数据格式举办仓库储存。怎么着输入就什么样存款和储蓄,不改 
变格式。

7、删除内定表
编写插入数据的SQL语句,直接调用SQLiteDatabase的execSQL()方法来实施

DATA :包含了 年份、月份、日期。

private void drop(SQLiteDatabase db){  
 //删除表的SQL语句
 String sql ="DROP TABLE stu_table";   
//执行SQL   
db.execSQL(sql); 
}   

TIME: 包含了 小时、分钟、秒。

三. SQLiteOpenHelper
该类是SQLiteDatabase三个补助类。这几个类首要生成一个数据库,并对数据库的本子进行田管。当在前后相继个中调用那一个类的秘技getWritableDatabase()恐怕getReadableDatabase()方法的时候,假若立时从未有过数量,那么Android系统就能够自动生成三个数据库。
SQLiteOpenHelper
是三个抽象类,我们平时需求后续它,何况实现里面包车型客车3个函数:
1.onCreate(SQLiteDatabase)
在数据库第一回生成的时候会调用那么些点子,也正是说,只有在开创数据库的时候才会调用,当然也是有意气风发部分其余的境况,日常大家在这里个艺术里边生成数据库表。

要翻看数据库,首先一定要找到db文件,要是拷贝到Computer上,查看的主意非常多,在三弟大上,用命令查占卜比较直接和方便。

  1. onUpgrade(SQLiteDatabase,int,int)
    当数据库必要提高的时候,Android系统会主动的调用那个措施。平时大家在这里个措施里边删除数据表,并树立新的数据表,当然是不是还须要做其他的操作,完全决计于应用的须要。

  2. onOpen(SQLiteDatabase):
    那是当张开数据库时的回调函数,日常在程序中不是很常利用。

首先要找到数据库的地点,平时数据库时寄存在程序的民用目录,所以要拿走root权限。

写了如此多,改改用实际例子来注解地点的剧情了。下边这一个操作数据库的实例完结了创造数据库,创制表以至数据库的增删改查的操作。
SQLiteActivity.java

保险开拓工具已经三番五次上手机,张开命令行,输入adb shell

package com.lingdududu.testSQLite;  

import com.lingdududu.testSQLiteDb.StuDBHelper;  

import android.app.Activity;  
import android.content.ContentValues;  
import android.database.Cursor;  
import android.database.sqlite.SQLiteDatabase;  
import android.os.Bundle;  
import android.view.View;  
import android.view.View.OnClickListener;  
import android.widget.Button;  
/*  
 * @author lingdududu  
 */ 
public class SQLiteActivity extends Activity {  
/** Called when the activity is first created. */ 
//声明各个按钮  
private Button createBtn;  
private Button insertBtn;  
private Button updateBtn;  
private Button queryBtn;  
private Button deleteBtn;  
private Button ModifyBtn;  
@Override 
public void onCreate(Bundle savedInstanceState) {  
super.onCreate(savedInstanceState);  
setContentView(R.layout.main);  

//调用creatView方法  
creatView();  
//setListener方法  
setListener();  
}  

//通过findViewById获得Button对象的方法  
private void creatView(){  
createBtn = (Button)findViewById(R.id.createDatabase);  
updateBtn = (Button)findViewById(R.id.updateDatabase);  
insertBtn = (Button)findViewById(R.id.insert);  
ModifyBtn = (Button)findViewById(R.id.update);  
queryBtn = (Button)findViewById(R.id.query);  
deleteBtn = (Button)findViewById(R.id.delete);  
}  

//为按钮注册监听的方法  
private void setListener(){  
createBtn.setOnClickListener(new CreateListener());  
updateBtn.setOnClickListener(new UpdateListener());  
insertBtn.setOnClickListener(new InsertListener());  
ModifyBtn.setOnClickListener(new  ModifyListener());  
queryBtn.setOnClickListener(new QueryListener());  
deleteBtn.setOnClickListener(new DeleteListener());  
}  

//创建数据库的方法  
class CreateListener implements OnClickListener{  

@Override 
public void onClick(View v) {  
//创建StuDBHelper对象  
StuDBHelper dbHelper = new StuDBHelper(SQLiteActivity.this,"stu_db",null,1);  
//得到一个可读的SQLiteDatabase对象  
SQLiteDatabase db =dbHelper.getReadableDatabase();  
} 
}  

//更新数据库的方法  
class UpdateListener implements OnClickListener{  

@Override 
public void onClick(View v) {  
// 数据库版本的更新,由原来的1变为2  
StuDBHelper dbHelper = new StuDBHelper(SQLiteActivity.this,"stu_db",null,2);  
SQLiteDatabase db =dbHelper.getReadableDatabase();  
} 
}  

//插入数据的方法  
class InsertListener implements OnClickListener{  

@Override 
public void onClick(View v) {  

StuDBHelper dbHelper = new StuDBHelper(SQLiteActivity.this,"stu_db",null,1);  
//得到一个可写的数据库  
SQLiteDatabase db =dbHelper.getWritableDatabase();  

//生成ContentValues对象 //key:列名,value:想插入的值
ContentValues cv = new ContentValues();  
//往ContentValues对象存放数据,键-值对模式  
cv.put("id", 1);  
cv.put("sname", "xiaoming");  
cv.put("sage", 21);  
cv.put("ssex", "male");  
//调用insert方法,将数据插入数据库  
db.insert("stu_table", null, cv);  
//关闭数据库  
db.close();  
} 
}  

//查询数据的方法  
class QueryListener implements OnClickListener{  

@Override 
public void onClick(View v) {  

StuDBHelper dbHelper = new StuDBHelper(SQLiteActivity.this,"stu_db",null,1);  
//得到一个可写的数据库  
SQLiteDatabase db =dbHelper.getReadableDatabase();  
//参数1:表名
//参数2:要想显示的列
//参数3:where子句
//参数4:where子句对应的条件值
//参数5:分组方式
//参数6:having条件
//参数7:排序方式
Cursor cursor = db.query("stu_table", new String[]{"id","sname","sage","ssex"}, "id=?", new String[]{"1"}, null, null, null);  
while(cursor.moveToNext()){  
String name = cursor.getString(cursor.getColumnIndex("sname"));  
String age = cursor.getString(cursor.getColumnIndex("sage"));  
String sex = cursor.getString(cursor.getColumnIndex("ssex"));  
System.out.println("query------->" + "姓名:"+name+" "+"年龄:"+age+" "+"性别:"+sex);  
}  
//关闭数据库  
db.close();  
} 
}  

//修改数据的方法  
class ModifyListener implements OnClickListener{  

@Override 
public void onClick(View v) {  

StuDBHelper dbHelper = new StuDBHelper(SQLiteActivity.this,"stu_db",null,1);  
//得到一个可写的数据库  
SQLiteDatabase db =dbHelper.getWritableDatabase();  
ContentValues cv = new ContentValues();  
cv.put("sage", "23");  
//where 子句 "?"是占位符号,对应后面的"1",  
String whereClause="id=?";  
String [] whereArgs = {String.valueOf(1)};  
//参数1 是要更新的表名  
//参数2 是一个ContentValeus对象  
//参数3 是where子句  
db.update("stu_table", cv, whereClause, whereArgs);  
}  
}  

//删除数据的方法  
class DeleteListener implements OnClickListener{  

@Override 
public void onClick(View v) {  

StuDBHelper dbHelper = new StuDBHelper(SQLiteActivity.this,"stu_db",null,1);  
//得到一个可写的数据库  
SQLiteDatabase db =dbHelper.getReadableDatabase();  
String whereClauses = "id=?";  
String [] whereArgs = {String.valueOf(2)};  
//调用delete方法,删除数据   
db.delete("stu_table", whereClauses, whereArgs);  
} 
}  
} 

冠亚体育手机网站 3

StuDBHelper.java

那会儿还未曾获取root权限,输入su,手提式有线电话机缘弹出提醒,允许获取root权限 

package com.lingdududu.testSQLiteDb;  

import android.content.Context;  
import android.database.sqlite.SQLiteDatabase;  
import android.database.sqlite.SQLiteDatabase.CursorFactory;  
import android.database.sqlite.SQLiteOpenHelper;  
import android.util.Log;  

public class StuDBHelper extends SQLiteOpenHelper {  

private static final String TAG = "TestSQLite";  
public static final int VERSION = 1;  

//必须要有构造函数  
public StuDBHelper(Context context, String name, CursorFactory factory,  
int version) {  
super(context, name, factory, version);  
}  

// 当第一次创建数据库的时候,调用该方法   
public void onCreate(SQLiteDatabase db) {  
String sql = "create table stu_table(id int,sname varchar(20),sage int,ssex varchar(10))";  
//输出创建数据库的日志信息  
Log.i(TAG, "create Database------------->");  
//execSQL函数用于执行SQL语句  
db.execSQL(sql);  
}  

//当更新数据库的时候执行该方法  
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
//输出更新数据库的日志信息  
Log.i(TAG, "update Database------------->");  
}  
}  

冠亚体育手机网站 4

main.xml

后缀变为“#”,成功赢得root权限,那时能够步入应用程序的私人商品房目录,

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
> 
   <TextView
android:layout_width="fill_parent"   
android:layout_height="wrap_content"   
android:text="@string/hello" 
/> 
<Button 
android:id="@+id/createDatabase" 
android:layout_width="fill_parent"   
android:layout_height="wrap_content"   
android:text="创建数据库" 
/>
<Button 
android:id="@+id/updateDatabase" 
android:layout_width="fill_parent"   
android:layout_height="wrap_content"   
android:text="更新数据库" 
/>
<Button 
android:id="@+id/insert" 
android:layout_width="fill_parent"   
android:layout_height="wrap_content"   
android:text="插入数据" 
/> 
<Button 
android:id="@+id/update" 
android:layout_width="fill_parent"   
android:layout_height="wrap_content"   
android:text="更新数据" 
/> 
<Button 
android:id="@+id/query" 
android:layout_width="fill_parent"   
android:layout_height="wrap_content"   
android:text="查询数据" 
/> 
 <Button 
android:id="@+id/delete" 
android:layout_width="fill_parent"   
android:layout_height="wrap_content"   
android:text="删除数据" 
/> 
</LinearLayout> 

输入cd data/data/程序包名/databases/,踏入数据库的目录

程序运营的功能图:

上边时部分主干的sqlite命令

冠亚体育手机网站 5

先是展开数据库,输入sqlite3 test_db,展开二个文书名字为test_db的数据。

冠亚体育手机网站 6

当点击创建数据库按键:
LogCat窗口输出的音信为:

要查阅数据库的结构,输入.schema

冠亚体育手机网站 7

冠亚体育手机网站 8 

当点击更新数据库按键:
LogCat窗口输出的音信为:

翻看一些有着的数据

冠亚体育手机网站 9

冠亚体育手机网站 10

当点击查询数据库开关:
LogCat窗口输出的音讯为:

翻开起来有一些讨厌,为了让数据看起来更加赏心悦目妙,输入.head
on,展现列名,输入.mode column,按类展现

冠亚体育手机网站 11

冠亚体育手机网站 12

动用adb命令查看数据库:
1.在命令行窗口输入adb
shell回车,就进入了Linux命令行,以往就足以采纳Linux的命令了。
2.ls回车,显示全部的东西,当中有个data。(ls:展现全数,cd:步向)
3.cd data回车,再ls回车,cd
data回车,ls回车后就拜谒到数不胜数的com.。。。,那正是系统上的应用程序包名,找到您数据库程序的包名,然后步向。
4.踏向后在查阅全数,拜望到有databases,步入databases,呈现全部就可以开采你的数据库名字,这里运用的是”stu_db”。
5.sqlite3
stu_db回车就步入了你的数据库了,然后“.schema”就能够看出该应用程序的全体表及建表语句。
6.自此就足以选取专门的学问的SQL语句查看刚才生成的数据库及对数码举办增加和删除改查了。

看起来舒服多了

sqlite3 stu_db

sqlite3 stu_db
SQLite version 3.6.22
Enter “.help” for instructions
Enter SQL statements terminated with a “;”
sqlite.schema
.schema
CREATE TABLE android_metadata (locale TEXT);
CREATE TABLE stu_table(id int,sname varchar(20),sage int,ssex
varchar(10)); —>创立的表
sqliteselect * from stu_table;
select * from stu_table;
1|xiaoming|21|male
sqlite>
布置数据
sqliteinsert into stu_table values(2,’xiaohong’,20,’female’);
布置的数据记得要和表中的性子风度翩翩意气风发对应
insert into stu_table values(2,’xiaohong’,20,’female’);
sqliteselect * from stu_table;
select * from stu_table;
1|xiaoming|21|male
2|xiaohong|20|female ————–插入的数额
sqlite>
当点击修改数据的开关时候
sqliteselect * from stu_table;
select * from stu_table;
1|xiaoming|23|male ————–>年龄被改换为23
2|xiaohong|20|female
sqlite>

当点击删除数据的开关
sqliteselect * from stu_table;
select * from stu_table;
1|xiaoming|23|male id=2的多寡已经被删除
简单的讲,大家可以在代码中施行数据库的增加和删除改查,也足以在adb命令行下降成。可是因为SQLite未有客商端,不能够一贯的查看数据库变化后的信息,所以常用adb命令行查看数据库退换后的新闻。

要查阅有稍许个表,输入.table

翻开单个表的组织,.schema TableName

上述命令实行简短的查阅数据库,应该丰盛了。

你大概感兴趣的作品:

  • Android应用中内嵌SQLite数据库的基本操作指南
  • 21天学习android开采教程之SQLite分页读取
  • Android开采之sqlite3命令行轻易利用方式
  • Android数据存款和储蓄之SQLite使用
  • Android编程操作嵌入式关系型SQLite数据库实例详解
  • Android中运用SQLite3
    命令行查看内嵌数据库的主意
  • android编制程序达成增加文本内容到sqlite表中的方法
  • Android
    SQLite数据库增加和删除改查操作的利用详解
  • Android开垦之SQLite的运用方法
  • Android
    App使用SQLite数据库的一些中央总结

Post Author: admin

发表评论

电子邮件地址不会被公开。 必填项已用*标注