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. vue2.0 — 移动端的输入框实时检索更新列表

    我们都是行走在这世界的孤独者 - 暖暖 最近在做vue2.0的项目遇到一个移动端实事检索搜索更新列表的效果,但用户在搜索框输入客户的电话或姓名的时候,客户列表内容会做相应的更新,下面给大家看下图~· ...

  2. php coding中的一些小问题

    最近在SAE上写微博应用,碰到一些小问题,记下来,以供参考: 1.出错提示: Fatal error: Can't use function return value in write context ...

  3. mysql高级之编程优化

    ★编程优化一.字符编码(mysql控制台乱码输出解决:character_set_results='gbk')表/列编码设置  列:alter table 表名 change 列名 列名 数据类型 c ...

  4. js中window对象的opener属性的一个坑

    2018-05-08 17:48:33 今天我编写代码碰到了一个让我纠结了很久的坑,特别想在此说一下,让其他人避免我踏过的这个坑. 这个坑就是:在我自己写的子窗口中用opener属性却获取不到父窗口的 ...

  5. The Beam Model:Stream & Tables翻译(上)

    本文由  网易云发布. 作者:周思华 本篇文章仅限内部分享,如需转载,请联系网易获取授权. 本文尝试描述Beam模型和Stream & Table理论间的关系(前者描述于数据流模型论文.the ...

  6. tomcat7性能调优与配置(以windows版为例)

    一.配置tomcat服务状态查看帐号(E:\Tomcats\apache-tomcat-7.0.73Test\conf下面的tomcat-users.xml中)加入:<user username ...

  7. ajax 原生态和jquery封装区别

    一.原生态 var xmlHttp = false; try{ if( xmlHttp && xmlHttp.readyState != 0 ){ xmlHttp.abort(); } ...

  8. 有终将被编程潮流淹没的程序员,那是因为没学python人工智能吧?

    2017年被称为中国人工智能元年--在两会时期,人工智能曾经成为国度计策,同时被写进当局报告.在从前的一年里,人工智能获得注重,已逐步浸透到别的行业,无人超市.主动驾驶.人脸识别.智能家居等" ...

  9. C#高级编程笔记之第一章:.NET体系结构

    1.1 C#与.NET的关系 C#不能孤立地使用,必须与.NET Framework一起使用一起考虑. (1)C#的体系结构和方法论反映了.NET基础方法论. (2)多数情况下,C#的特定语言功能取决 ...

  10. 洛谷 P1041 错解

    P1041 传染病控制 题目背景 近来,一种新的传染病肆虐全球.蓬莱国也发现了零星感染者,为防止该病在蓬莱国大范围流行,该国政府决定不惜一切代价控制传染病的蔓延.不幸的是,由于人们尚未完全认识这种传染 ...