SQLite是一款轻量级的关系型数据库,它的运算速度非常快,占用资源很少。

一般有以下几个关键步骤:

1.创建数据库

2.创建表

3.操作:增删改查

4.关闭数据库

5.删除表(非必选)

SQLiteOpenHelper是SQLiteDatabse的一个帮助类,用来管理数据的创建和版本更新。一般的用法是定义一个类继承SQLiteOpenHelper,并实现两个回调方法,OnCreate(SQLiteDatabase db)和onUpgrade(SQLiteDatabse, int oldVersion, int newVersion)来创建和更新数据库。

下面新建类MyDatabaseHelper继承自SQLiteOpenHelper,并创建了表people

public class MyDatabaseHelper extends SQLiteOpenHelper {

    public static final String CREATE_PEOPLE = "create table people ("+"id integer primary key autoincrement,"+"name text,"+"age int,"+"price double)";

    public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
} @Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
//创建表
sqLiteDatabase.execSQL(CREATE_PEOPLE);
} @Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { //删除旧表重新创建
sqLiteDatabase.execSQL("drop table if exists people");
onCreate(sqLiteDatabase);
}
}

下面采用了两种方式来展示增删改查

第一种:纯SQL语句

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";
private MyDatabaseHelper myDatabaseHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //增加version 来删除之前的表信息
myDatabaseHelper = new MyDatabaseHelper(this,"peopleInfo.db",null,9);
//创建数据库
myDatabaseHelper.getWritableDatabase(); //打开数据库
SQLiteDatabase database = myDatabaseHelper.getWritableDatabase();
//新增zhangsan 18 11.11
// ContentValues values = new ContentValues();
// values.put("name","zhangsan");
// values.put("age",18);
// values.put("price",11.11);
// database.insert("people",null,values); database.execSQL("insert into people (name,age,price) values(?,?,?)",new String[] {"zhangsan","18","11.11"}); //新增lisi 28 22.22
// values.clear();
// values.put("name","lisi");
// values.put("age",28);
// values.put("price",22.22);
// database.insert("people",null,values); database.execSQL("insert into people (name,age,price) values(?,?,?)",new String[] {"lisi","28","22.22"}); //新增wangwu 48 44.44
// values.clear();
// values.put("name","wangwu");
// values.put("age",48);
// values.put("price",44.44);
// database.insert("people",null,values); database.execSQL("insert into people (name,age,price) values(?,?,?)",new String[] {"wangwu","48","44.44"}); //删除zhangsan信息
// database.delete("people","name = ?",new String[] {"zhangsan"}); database.execSQL("delete from people where name = ?",new String[] {"zhangsan"}); //更改lisi age=38
// values.clear();
// values.put("age",38);
// database.update("people",values,"name = ?",new String[] {"lisi"}); database.execSQL("update people set age = ? where name = ? ",new String[] {"38","lisi"}); //查询people表的内容并打印
// Cursor cursor = database.query("people",null,null,null,null,null,null,null);
Cursor cursor = database.rawQuery("select * from people",null);
if (cursor.moveToFirst()){
do{
String name = cursor.getString(cursor.getColumnIndex("name"));
int age = cursor.getInt(cursor.getColumnIndex("age"));
double price = cursor.getDouble(cursor.getColumnIndex("price")); Log.d(TAG, "onCreate: "+name+" "+age+" "+price); }while (cursor.moveToNext()); }
cursor.close(); }
}

第二种:Android对象方式

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";
private MyDatabaseHelper myDatabaseHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //增加version 来删除之前的表信息
myDatabaseHelper = new MyDatabaseHelper(this,"peopleInfo.db",null,9);
//创建数据库
myDatabaseHelper.getWritableDatabase(); //打开数据库
SQLiteDatabase database = myDatabaseHelper.getWritableDatabase();
//新增zhangsan 18 11.11
ContentValues values = new ContentValues();
values.put("name","zhangsan");
values.put("age",18);
values.put("price",11.11);
database.insert("people",null,values); // database.execSQL("insert into people (name,age,price) values(?,?,?)",new String[] {"zhangsan","18","11.11"}); //新增lisi 28 22.22
values.clear();
values.put("name","lisi");
values.put("age",28);
values.put("price",22.22);
database.insert("people",null,values); // database.execSQL("insert into people (name,age,price) values(?,?,?)",new String[] {"lisi","28","22.22"}); //新增wangwu 48 44.44
values.clear();
values.put("name","wangwu");
values.put("age",48);
values.put("price",44.44);
database.insert("people",null,values); // database.execSQL("insert into people (name,age,price) values(?,?,?)",new String[] {"wangwu","48","44.44"}); //删除zhangsan信息
database.delete("people","name = ?",new String[] {"zhangsan"}); // database.execSQL("delete from people where name = ?",new String[] {"zhangsan"}); //更改lisi age=38
values.clear();
values.put("age",38);
database.update("people",values,"name = ?",new String[] {"lisi"}); // database.execSQL("update people set age = ? where name = ? ",new String[] {"38","lisi"}); //查询people表的内容并打印
Cursor cursor = database.query("people",null,null,null,null,null,null,null);
// Cursor cursor = database.rawQuery("select * from people",null);
if (cursor.moveToFirst()){
do{
String name = cursor.getString(cursor.getColumnIndex("name"));
int age = cursor.getInt(cursor.getColumnIndex("age"));
double price = cursor.getDouble(cursor.getColumnIndex("price")); Log.d(TAG, "onCreate: "+name+" "+age+" "+price); }while (cursor.moveToNext()); }
cursor.close(); }
}

最终结果

05-28 10:00:11.618 16802-16802/? D/MainActivity: onCreate: lisi 38 22.22
05-28 10:00:11.618 16802-16802/? D/MainActivity: onCreate: wangwu 48 44.44

SQL Android的更多相关文章

  1. Android开发数据存储之ContentProvider详解

    转载:十二.ContentProvider和Uri详解 一.使用ContentProvider(内容提供者)共享数据 ContentProvider在android中的作用是对外共享数据,也就是说你可 ...

  2. Quartz动态添加,修改,删除任务(暂停,任务状态,恢复,最近触发时间)

    首页 博客 学院 下载 图文课 论坛 APP 问答 商城 VIP会员 活动 招聘 ITeye GitChat 写博客 小程序 消息 登录注册 关闭 quartz_Cron表达式一分钟教程 09-05 ...

  3. win10开启 linux Bash命令(win10内置了linux系统支持)

    win10开启 Ubuntu linux Bash命令(win10内置了linux系统支持) 第一步: 先在设置→更新和安全→针对开发人员中选择"开发人员模式",点击后会下载&qu ...

  4. Android SQL语句实现数据库的增删改查

    本文介绍android中的数据库的增删改查 复习sql语法: * 增 insert into info (name,phone) values ('wuyudong','111') * 删 delet ...

  5. android: SQLite使用 SQL 操作数据库

    虽然 Android 已经给我们提供了很多非常方便的 API 用于操作数据库,不过总会有一些 人不习惯去使用这些辅助性的方法,而是更加青睐于直接使用 SQL 来操作数据库.这种人 一般都是属于 SQL ...

  6. [Android新手区] SQLite 操作详解--SQL语法

    该文章完全摘自转自:北大青鸟[Android新手区] SQLite 操作详解--SQL语法  :http://home.bdqn.cn/thread-49363-1-1.html SQLite库可以解 ...

  7. 在线API,桌面版,jquery,css,Android中文开发文档,JScript,SQL掌用实例

    学习帮助文档大全 jquery,css,Android中文开发文档,JScript,SQL掌用实例 http://api.jq-school.com/

  8. Android adb使用sqlite3对一个数据库进行sql查询

    sqlite是Android下集成的一个轻量级数据库,我们可以通过adb程序进入数据库命令行,对数据进行查询,具体操作如下: ①打开windows的cmd ②输入adb shell.此时进入了该安卓系 ...

  9. Android 连接 SQL Server (jtds方式)——下

    本文主要补充介绍jtds的查询方法,将以博主的一个实际开发程序进行说明 下图是项目的文件列表与界面效果:          运行效果: 1.三个EditText对应的是单个计划的序号.品种名.数量 2 ...

随机推荐

  1. Web运营手记

    1.图片是给活人用户看的,相对来讲,文字是给搜索引擎看的.精华内容争取要在网站或者频道主页里面让人看到. 2.搜索引擎喜欢看的几种文字:页面标题.关键词元信息(只有Bing管点用).描述(descri ...

  2. Spring请求参数校验

    SpringMVC支持的数据校验是JSR303的标准,通过在bean的属性上打上@NotNull.@Max等进行验证.JSR303提供有很多annotation接口,而SpringMVC对于这些验证是 ...

  3. 终端字形logo

    网上有很多的项目都有一个自己的字形logo,而我也在开发一个小的项目,也想要生成一个终端字形的logo,于是找到这款小工具,分享给大家:FIGlet “FIGlet is a program for ...

  4. java之SpringMVC的controller配置总结

    先在springmvc-servlet.xml文件作如下配置(注解开发controller) <?xml version="1.0" encoding="UTF-8 ...

  5. SOFA 源码分析 —— 过滤器设计

    前言 通常 Web 服务器在处理请求时,都会使用过滤器模式,无论是 Tomcat ,还是 Netty,过滤器的好处是能够将处理的流程进行分离和解耦,比如一个 Http 请求进入服务器,可能需要解析 h ...

  6. 如何用plugman编辑和添加cordova插件

    1.安装工具 进入nodejs, 安装工具plugman,管理插件,输入命令npm install -g plugman 等待下载安装 2.使用plugman命令生成插件框架 cmd 进入用于生成插件 ...

  7. 分布式任务调度——quartz + spring + 数据库

        项目中使用分布式并发部署定时任务,多台跨JVM,按照常理逻辑每个JVM的定时任务会各自运行,这样就会存在问题,多台分布式JVM机器的应用服务同时干活,一个是加重服务负担,另外一个是存在严重的逻 ...

  8. flex 访问webservice方法及跨域问题解决

    一.flex调用webserivice代码 import mx.rpc.soap.WebService; import mx.rpc.events.FaultEvent;   import mx.rp ...

  9. QT https post请求(QNetworkRequest要设置SSL证书,而SSL证书认证有三种)

    因为https访问需要用到SSL认证,而QT默认是不支持SSL认证,所以在使用之前必须先做一些准备工作: 需要安装OpenSSL库: 1.首先打开http://slproweb.com/product ...

  10. lintcode 链表求和

    题目要求 你有两个用链表代表的整数,其中每个节点包含一个数字.数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头.写出一个函数将两个整数相加,用链表形式返回和. 样例 给出两个链表 3- ...