SQLite是Android自带的轻量级数据库,接口封装的很好,不会SQL的也能很好的使用。

接下来讲一下怎么创建数据库、通过adb查看数据表和数据、增删查改。

一、创建数据库

Android封装了SQLiteOpenHelper给我们操作数据库,我们要继承它,然后实现自己的操作。

public class MyDatabaseHelper extends SQLiteOpenHelper {

    public String CREATE_BOOK = "CREATE TABLE BOOK (" +
"name char(20) NOT NULL," +
"price char(10) NOT NULL" +
")"; //构造函数
public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
} //如果传入的数据库不存在的话,才会调用该函数
@Override
public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_BOOK); } //输入版本号比当前版本号高的时候,才会调用该函数
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { }
}

当然在控制台自己创建也可以(这个可以忽略)

在MainActivity创建数据库

public class MainActivity extends AppCompatActivity {

    Button create;

    MyDatabaseHelper helper;

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //打开数据库 第一个参数是上下文 第二个是数据库的名字,如果没有则会创建,第三个一般为null,第四个版本号
helper = new MyDatabaseHelper(this,"Book.db",null,1); create = (Button)findViewById(R.id.create); create.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { //获取一个可写的数据库实例,如果没有该数据库,会调用MyDatabaseHelper里面的Create方法
helper.getWritableDatabase(); }
}); }
}

二、通过adb查看数据库

adb在sdk文件夹下的platform-tools中,我们需要把路径配置到环境变量的path变量中。

然后在cmd输入adb,就能进入手机或者模拟器的控制台了。

进入data/data,再输入ls命令,可以看到自己的项目:

进入自己的项目,能看到自己的数据库文件夹

进入文件夹,能看到我们创建的数据库表:

然后输入sqlite3 Book.db,打开数据库,再输入.table,就能看到我们创建的表了

可以证明我们第一步创建数据库成功了。

三、插入数据

只需要获得一个数据库实例,然后通过ContentValues组装数据,然后再插入即可。

MainActivity代码,新增了insert按钮,点击添加数据:

insert.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { //获取一个可写的数据库实例
SQLiteDatabase db = helper.getWritableDatabase(); //用于组装插入的数据
ContentValues values = new ContentValues(); values.put("name","计算机组成原理");
values.put("price","100"); //插入,第一个参数为表名,第二个一般为null,第三个是我们的数据
db.insert("BOOK",null,values); //清空
values.clear(); //插入第二条数据
values.put("name","数据库原理");
values.put("price","50"); db.insert("BOOK",null,values); }
});

在adb通过sql语句查看结果:

四:更新数据

原理和插入差不多:

update.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { //获取一个可写的数据库实例
SQLiteDatabase db = helper.getWritableDatabase(); //用于组装更新的数据
ContentValues values = new ContentValues(); values.put("price","888"); //第一个参数是表名,第二个参数是数据,第三个是约束条件,对应SQL的where子句,第四个参数是占位符'?'的具体实现 相当于name = “计算机组成原理”
db.update("BOOK",values,"name = ?",new String[]{"计算机组成原理"}); }
});

通过adb可见,第一本书的价格已经更新到888元了

五:查询数据

query.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { //获取一个可写的数据库实例
SQLiteDatabase db = helper.getWritableDatabase(); //调用查找方法 第一个参数为表名 第二个为列名 第三个为约束条件where 第四个为约束条件占位符的具体值
//第五个为排序的列 第六个对应having 第七个对应orderby
//以下默认查询所有列,结果的集合返回到游标
Cursor cursor = db.query("BOOK",null,null,null,null,null,null,null); String temp = ""; //遍历
while(cursor.moveToNext()){ String name = cursor.getString(cursor.getColumnIndex("name")); String price = cursor.getString(cursor.getColumnIndex("price")); temp+= name+" "+price+"\n"; } //关闭游标
cursor.close(); result.setText(temp); }
});

运行效果:

六:删除数据

delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { //获取一个可写的数据库实例
SQLiteDatabase db = helper.getWritableDatabase(); //表名 约束条件
db.delete("BOOK","price = ?",new String[]{"888"}); }
});

先点击删除,再点击查询:

完整的MainActivity代码:

public class MainActivity extends AppCompatActivity {

    Button create;
Button insert;
Button update;
Button query;
Button delete; TextView result; MyDatabaseHelper helper; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //打开数据库 第一个参数是上下文 第二个是数据库的名字,如果没有则会创建,第三个一般为null,第四个版本号
helper = new MyDatabaseHelper(this,"Book.db",null,1); result = (TextView)findViewById(R.id.result);
create = (Button)findViewById(R.id.create);
insert = (Button)findViewById(R.id.insert);
update = (Button)findViewById(R.id.update);
query = (Button)findViewById(R.id.query);
delete = (Button)findViewById(R.id.delete); create.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { //获取一个可写的数据库实例,如果没有该数据库,会调用MyDatabaseHelper里面的Create方法
helper.getWritableDatabase(); }
}); insert.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { //获取一个可写的数据库实例
SQLiteDatabase db = helper.getWritableDatabase(); //用于组装插入的数据
ContentValues values = new ContentValues(); values.put("name","计算机组成原理");
values.put("price","100"); //插入,第一个参数为表名,第二个一般为null,第三个是我们的数据
db.insert("BOOK",null,values); //清空
values.clear(); //插入第二条数据
values.put("name","数据库原理");
values.put("price","50"); db.insert("BOOK",null,values); }
}); update.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { //获取一个可写的数据库实例
SQLiteDatabase db = helper.getWritableDatabase(); //用于组装更新的数据
ContentValues values = new ContentValues(); values.put("price","888"); //第一个参数是表名,第二个参数是数据,第三个是约束条件,对应SQL的where子句,第四个参数是占位符'?'的具体实现 相当于name = “计算机组成原理”
db.update("BOOK",values,"name = ?",new String[]{"计算机组成原理"}); }
}); query.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { //获取一个可写的数据库实例
SQLiteDatabase db = helper.getWritableDatabase(); //调用查找方法 第一个参数为表名 第二个为列名 第三个为约束条件where 第四个为约束条件占位符的具体值
//第五个为排序的列 第六个对应having 第七个对应orderby
//以下默认查询所有列,结果的集合返回到游标
Cursor cursor = db.query("BOOK",null,null,null,null,null,null,null); String temp = ""; //遍历
while(cursor.moveToNext()){ String name = cursor.getString(cursor.getColumnIndex("name")); String price = cursor.getString(cursor.getColumnIndex("price")); temp+= name+" "+price+"\n"; } //关闭游标
cursor.close(); result.setText(temp); }
}); delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { //获取一个可写的数据库实例
SQLiteDatabase db = helper.getWritableDatabase(); //表名 约束条件
db.delete("BOOK","price = ?",new String[]{"888"}); }
}); }
}

布局代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.administrator.databasetest.MainActivity"> <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="查询结果"
android:id="@+id/result"
android:textSize="30dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginBottom="122dp" /> <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/create"
android:text="创建" /> <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/insert"
android:text="添加"
android:layout_below="@+id/create"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" /> <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="更新"
android:id="@+id/update"
android:layout_below="@+id/insert"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" /> <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/query"
android:text="查找"
android:layout_below="@+id/update"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" /> <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="删除"
android:id="@+id/delete"
android:layout_below="@+id/query"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" /> </RelativeLayout>

SQLite基本都用法就那么多,想深入了解的可以看看官方的API,谢谢各位阅读。

SQLite的基本用法的更多相关文章

  1. (26)SQLite集成与用法

    概述 在Cocos2d-x中,简单数据存储,可以使用UserDefault.那么如何存储大量,不规则的数据?我们可以使用SQLite数据库存储数据.SQLite是使用非常广泛的嵌入式数据库,它有小巧 ...

  2. SQLite集成与用法

    本文转载至 http://cn.cocos2d-x.org/article/index?type=cocos2d-x&url=/doc/cocos-docs-master/manual/fra ...

  3. SQLite一些函数用法

    --格林威治日期时间,比北京时间晚8小时 select datetime('now'); --格林威治日期 select date('now'); --本地时间 select time('now',' ...

  4. Android SQLite (二) 基本用法

    在Android开发中SQLite起着很重要的作用,网上SQLite的教程有很多很多,不过那些教程大多数都讲得不是很全面.本人总结了一些SQLite的常用的方法,借着论坛的大赛,跟大家分享分享的. 一 ...

  5. Android SQLite (四 ) 全面详解(二)

    SQLite创建数据库 创建数据库语法: sqlite3 DatabaseName.db 如下展示一个实例: SQLite附加数据库 假设这样一种情况,当在同一时间有多个数据库可用,您想使用其中的任何 ...

  6. SQLite使用教程11 表达式

    SQLite 表达式 表达式是一个或多个值.运算符和计算值的SQL函数的组合. SQL 表达式与公式类似,都写在查询语言中.您还可以使用特定的数据集来查询数据库. 语法 假设 SELECT 语句的基本 ...

  7. SQLite使用教程10 运算符

    SQLite 运算符 SQLite 运算符是什么? 运算符是一个保留字或字符,主要用于 SQLite 语句的 WHERE 子句中执行操作,如比较和算术运算. 运算符用于指定 SQLite 语句中的条件 ...

  8. Andoird - SQLite 数据库 基础教程

    链接来源 http://www.tutorialspoint.com/android/android_sqlite_database.htm SQLite是一个开源的SQL数据库,这个数据库把数据存储 ...

  9. SQLite语法

    一.建立数据库 sqlite3.exe test.db 二.双击sqlite-3_6_16目录下的程序sqlite3.exe,即可运行 三.退出 .exit 或者 .quit 四.SQLite支持如下 ...

随机推荐

  1. 使用vue与element组件

    1.安装element npm i element-ui -S 2.引入 在main.js写入一下内容 import Vue from 'vue'; import ElementUI from 'el ...

  2. Spring 学习笔记(一)

    # IOC, DI # ApplicationContext.xml 描述类之间的依赖注入关系 # 初始化Bean工厂的两种方式 ## ClassPathXmlApplicationContext # ...

  3. Docker学习(二)docker镜像操作

    上一篇:docker学习(一)在centos7上安装docker 列出所有docker镜像 docker images 拉取镜像 docker pull 镜像名 我这里一Tomact为例 首先在Doc ...

  4. BZOJ1853 Scoi2010 幸运数字 【枚举+容斥】

    BZOJ1853 Scoi2010 幸运数字 Description 在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的“幸运号码”是十进制表示中只包含数字6和8的那些号 ...

  5. Cookie用法

    //写入 protected void Button1_Click(object sender, EventArgs e) { HttpCookie cookie=new HttpCookie(&qu ...

  6. .NET 中 GetProcess 相关方法的性能

    .NET 的 Process 类中提供了查找进程的若干方法,其中部分方法还比较消耗性能.如果你试图优化查找进程相关方法的性能,可能本文分享的一些耗时数据可以作为参考.   性能比较 Process 类 ...

  7. 为什么 UEFI 方式启动的 U 盘必须使用 FAT32 文件系统?

    如果你希望更刺激地安装 Windows,那么你需要了解很多 Windows 系统相关的问题. 为什么 UEFI 方式启动的 U 盘必须使用 FAT32 文件系统? 因为 NTFS 是 Windows ...

  8. linux 磁盘挂载操作

    1. fdisk  -l      查看磁盘   2. fisk  /dev/vdb   进行分区        依次输入  n  p  1   两次回车  wq   3. fdisk -l  查看分 ...

  9. 【转】Linux动态链接(4)ldd与ldconfig

    原文网址:http://tsecer.blog.163.com/blog/static/15018172012414105551345/ 一.动态链接工具ldd和ldconfig是动态链接的两个重要辅 ...

  10. 数据库的备份与恢复(oracle 11g) (转)

    一.       内容与步骤 (注意这里许多步骤需要同学们查资料,理解并消化后才能完成) 1.数据库创建 (1)   安装Oralce11g: (2)   创建至少两个以上用户: (3)   每个用户 ...