移动端Android开发,我们使用的是sqlite数据库,这是一个轻量级的数据库,我们在使用的时候,甚至不想mysql等数据库一样加载驱动啊,在androidsdk中,都已经帮我们做好了,我们只需要用就好了,下面介绍一下使用方法,

  首先,我们需要建一个类来继承SQLiteOpenHelper,并重写PersonSQLiteOpenHelper与oncreate方法即可,前者是建立一个的名字,后者是建立数据库结构的脚本,这两个方法会在数据库第一次创建的时候,调用。建好了,就不再调用了。

/**
* 数据库的构造方法,用来定义数据库的名称,数据库的查询的结果集,数据库版本。
* @param context
*/
//factory ,游标工厂,设置位null,version数据库版本。
public PersonSQLiteOpenHelper(Context context) {
super(context, "person.db", null, 1);
} /**
* 数据库第一次创建的时候,调用的方法
* db:被创建的数据,
*/
@Override
public void onCreate(SQLiteDatabase db) { //初始化数据库的表结构。
db.execSQL("create table person (id integer primary key autoincrement,name varchar(20),number varchar(20))");
}

数据库建好了,我们接下来要实现数据库的曾删改查的一些操作了,这时我们可以选择sql脚本或者google工程师封装好的api进行

  

public class PersonDao {
private PersonSQLiteOpenHelper helper;
public PersonDao(Context context){
helper = new PersonSQLiteOpenHelper(context);
} public void add(String name,String number){
SQLiteDatabase db = helper.getWritableDatabase();
db.execSQL("insert into person (name,number) values (?,?)",new Object[]{name,number});
// db.execSQL(sql, bindArgs) db.close();
} public boolean find(String name){
SQLiteDatabase db = helper.getReadableDatabase();
Cursor cursor = db.rawQuery("select * from person where name = ?", new String[]{name});
//默认的结果集是指到第一个行,是空的,
boolean result = cursor.moveToNext();
cursor.close();
db.close();
return result;
}
//修改number
public void update(String name,String number){
SQLiteDatabase db = helper.getReadableDatabase();
db.execSQL("update person set number =? where name = ?",new Object[]{number,name});
db.close();
}
public void delete(String name){
SQLiteDatabase db = helper.getReadableDatabase();
db.execSQL("delete from person where name = ?", new Object[]{name});
} public List<Person> findAll(){
SQLiteDatabase db = helper.getReadableDatabase();
Cursor cursor = db.rawQuery("select * from person", null);
List<Person> persons = new ArrayList<Person>(); while(cursor.moveToNext()){
//0
// int id = cursor.getInt(0);
int id = cursor.getInt(cursor.getColumnIndex("id"));
String name = cursor.getString(1);
String number = cursor.getString(2);
Person p = new Person(id, name, number);
persons.add(p);
} cursor.close();
db.close();
return persons;
} }
public class PersonDaoApi {
private PersonSQLiteOpenHelper helper;
public PersonDaoApi(Context context){
helper = new PersonSQLiteOpenHelper(context);
} public long add(String name,String number){
SQLiteDatabase db = helper.getWritableDatabase();
//db.execSQL("insert into person (name,number) values (?,?)",new Object[]{name,number});
ContentValues values = new ContentValues();
values.put("name", name);
values.put("number", number);
//返回结果>-1,表示成功的。
long result = db.insert("person", null, values);
db.close();
return result;
} public boolean find(String name){
SQLiteDatabase db = helper.getReadableDatabase();
//Cursor cursor = db.rawQuery("select * from person where name = ?", new String[]{name});
//db.query("person", columns, selection, selectionArgs, groupBy, having, orderBy)
// columes=null,反悔所有列。
Cursor cursor = db.query("person", null, "name=?", new String[]{name}, null, null, null); //默认的结果集是指到第一个行,是空的,
boolean result = cursor.moveToNext();
cursor.close();
db.close();
return result;
}
//修改number
public int update(String name,String number){
SQLiteDatabase db = helper.getReadableDatabase();
//db.execSQL("update person set number =? where name = ?",new Object[]{number,name});
ContentValues values = new ContentValues();
values.put("number", number); //影响多少行,
int row = db.update("person", values, "name=?", new String[]{name});
db.close();
return row;
}
public int delete(String name){
SQLiteDatabase db = helper.getReadableDatabase();
// db.execSQL("delete from person where name = ?", new Object[]{name});
//影响的行数,》0 及成功
int row = db.delete("person", "name=?", new String[]{name});
db.close();
return row;
} public List<Person> findAll(){
SQLiteDatabase db = helper.getReadableDatabase();
//Cursor cursor = db.rawQuery("select * from person", null); Cursor cursor = db.query("person", new String[]{"name", "id", "number"}, null, null, null,null, null); List<Person> persons = new ArrayList<Person>(); while(cursor.moveToNext()){
//0
// int id = cursor.getInt(0);
int id = cursor.getInt(cursor.getColumnIndex("id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
String number = cursor.getString(cursor.getColumnIndex("number"));
Person p = new Person(id, name, number);
persons.add(p);
} cursor.close();
db.close();
return persons;
} }

数据库建好后,在哪里呢,我们怎样找到呢?

  数据库建好后,存放在Android目录的/data/data/程序包名/databases 目录下,我们打开后,就可以刚才建的数据库了,把这个.db文件导出,用sqlitemanager(mac),或者sqlitexploer(windows),就可以打开这个数据库进行查看了,

  但是/data/data/程序包名/databases 这个目录由于权限的控制,我们也只能是在模拟器中能打开,真机调试的时候,是打不开的,那我们怎么进行使用呢,

这时我们可以使用adb指令,来使用,首先在终端中是可以打开这个目录的,所以我们先进入这个目录,比如我们执行

# cd /data/data/com.ftf.db/databses
# sqlite3 person.db

就会发现,不再是adb模式下的指令了,而变成sql指令的形式了,而这是和mysql一样的,这时我们就可以相关sql语句的书写了。

Android使用sqlite数据库的使用的更多相关文章

  1. Qt for Android 打包 SQLite 数据库

    Qt for Android 调用 SQLite 数据库时, 怎样将已经存在的数据库附加到 APK 中? 直接在你项目里面的Android源码的根目录下新建一个文件夹assets, 数据库就可以放里面 ...

  2. Android实现SQLite数据库联系人列表

    Android实现SQLite数据库联系人列表 开发工具:Andorid Studio 1.3 运行环境:Android 4.4 KitKat 工程内容 实现一个通讯录查看程序: 要求使用SQLite ...

  3. Android中SQLite数据库操作(1)——使用SQL语句操作SQLite数据库

    下面是最原始的方法,用SQL语句操作数据库.后面的"Android中SQLite数据库操作(2)--SQLiteOpenHelper类"将介绍一种常用的android封装操作SQL ...

  4. android中sqlite数据库的基本使用和添加多张表

    看了很多关于android使用sqlite数据库的文章,很多都是介绍了数据库的建立和表的建立,而表通常都是只建立一张,而实际情况我们用到的表可能不止一张,那这种情况下我们又该怎么办呢,好了,下面我教大 ...

  5. android 一个SQLite数据库多个数据表的基本使用框架 (带demo)

    android 一个SQLite数据库多个数据表(带demo) 前言        demo演示        一.搭建        二.建立实体类        三.建立数据库操作类        ...

  6. Android之SQLite数据库篇

    一.SQLite简介 Google为Andriod的较大的数据处理提供了SQLite,他在数据存储.管理.维护等各方面都相当出色,功能也非常的强大. 二.SQLite的特点 1.轻量级使用 SQLit ...

  7. Android之SQLite数据库使用

    转载整理于:http://my.csdn.net/lmj623565791 我刚开始接触Android的时候甚至都不敢相信,Android系统竟然是内置了数据库的!好吧,是我太孤陋寡闻了.由于我之前是 ...

  8. android安卓Sqlite数据库实现用户登录注册

    看了很多别人写的安卓SQlite数据的操作代码,一点也不通俗易懂,我觉得我写的不错,而且安卓项目也用上了,所以在博客园里保存分享一下!建立一个类 并继承SQLiteOpenHelper public ...

  9. Android中SQLite数据库小计

    2016-03-16 Android数据库支持 本文节选并翻译<Enterprise Android - Programing Android Database Applications for ...

  10. android 对sqlite数据库的增删改查等各种操作

    转载:http://blog.csdn.net/vrix/article/details/6717090 package com.sqlite.main; import java.io.File; i ...

随机推荐

  1. [转载]在网页中插入media,RealPlayer等控件

    [转载]在网页中插入media,RealPlayer等控件 (2012-11-02 20:27:43) 转载▼ 标签: 转载   原文地址:在网页中插入media,RealPlayer等控件作者:Mo ...

  2. ICMP协议和ping命令

    当网络不通的情况下,通常会想到ping命令,ping一下,但是ping命令内部如何执行的,可能并不清楚,其实ping是基于ICMP协议进行工作的.  一.ICMP协议的格式 ICMP是在RFC 792 ...

  3. 负对数似然(negative log-likelihood)

    negative log likelihood文章目录negative log likelihood似然函数(likelihood function)OverviewDefinition离散型概率分布 ...

  4. Oracle存储过程和程序包

    一.为什么要用存储过程? 如果在应用程序中经常需要执行特定的操作,可以基于这些操作简历一个特定的过程.通过使用过程可以简化客户端程序的开发和维护,而且还能提高客户端程序的运行性能. 二.过程的优点? ...

  5. 「 HDU 1978 」 How many ways

    # 解题思路 记忆化搜索 一个点可以跳到的点,取决于它现在的能量.而且有一个显而易见的性质就是一条可行路径的终点和起点的横坐标之差加上纵坐标之差肯定小于等于起点的能量. 因为跳到一个点之后,能量和之前 ...

  6. l5-repository基本使用

    一.安装 composer require prettus/l5-repository 二.Model层:Warehouse.php <?php namespace App\Model; use ...

  7. 分布式集群算法 memcached 如何实现分布式?

    memcached 是一个”分布式缓存”,然后 memcached 并不像 mongoDB 那 样,允许配置多个节点,且节点之间”自动分配数据”. 就是说--memcached 节点之间,是不互相通信 ...

  8. javascript中点击事件传入this的用法

    在script中有几种绑定事件的方法,有的在绑定函数中传入this参数,有的没有,那么,它们之间到底有什么区别呢? <!DOCTYPE html> <html lang=" ...

  9. windows系统安装虚拟机VMware12,然后在虚拟机中安装Red Hat Enterprise Linux6操作系统

    准备工作下载百度网盘: https://www.baidu.com/s?wd=%E7%99%BE%E5%BA%A6%E7%BD%91%E7%9B%98&rsv_spt=1&rsv_iq ...

  10. 文件 jq 传到后台

    XMLHttpRequest Level 2 添加了一个新的接口——FormData.与普通的 Ajax 相比,使用 FormData 的最大优点就是我们可以异步上传二进制文件. jQuery 2.0 ...