一起学Android之Sqlite
概述
Android对Sqlite提供了完全友好的支持,在应用程序内部,都可以通过名称访问任何的数据库。建议通过SQLiteOpenHelpe的子类并通过重写onCreate() 方法进行创建数据表。本文主要讲解Andriod开发中Sqlite的简单应用(增删改查),仅供学习分享使用。
涉及知识点
- SQLiteOpenHelper 管理创建数据库和版本管理的帮助类(抽象类)。
- onCreate 创建数据表的方法
- execSQL 执行一个非Select的语句,没有返回信息。
- SQLiteDatabase 管理Sqlite数据的对象,显示提供一组方法来管理数据库(CRUD)。
- SimpleCursorAdapter 一个简易的适配器,用来将Cursor适配数据到控件上。
- ContentValues 存储一组数据值(key-value)。
示例效果图
如下图所示:

数据库帮助类
代码如下:
package com.hex.demosqlite; import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper; /**
* Created by Administrator on 2019/4/4.
*/
public class DatabaseHelper extends SQLiteOpenHelper { private static final String DB_NAME="persons.db"; private static final int DB_VERSION=1; public DatabaseHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
} /**
* 创建数据库,指定数据库名称,版本号
* @param db
*/
@Override
public void onCreate(SQLiteDatabase db) {
String sql="create table person(_id integer primary key autoincrement not null, name char(10),nickname char(10))";
db.execSQL(sql);
} /**
* 数据库升级
* @param db
* @param oldVersion
* @param newVersion
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if(newVersion>oldVersion){
onCreate(db);
}
}
}
新增(Insert)
代码如下:
/**
* 新增
*
* @param v
*/
public void add(View v) {
/** //一般不使用此种方法,因为execSQL方法没有返回值
String sql="insert into person(name,nickname)values('宋江','及时雨')";
db.execSQL(sql);
*/
ContentValues values = new ContentValues();
values.put("name", "宋江");
values.put("nickname", "及时雨");
//返回值为插入行的行号
long result = db.insert("person", null, values);
if (result > 0) {
Toast.makeText(this, "插入成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "插入失败", Toast.LENGTH_SHORT).show();
}
}
查询(Query)
代码如下:
/**
* 查询
*
* @param v
*/
public void query(View v) {
/*
String sql="select * from person where name=?";
Cursor cursor = db.rawQuery(sql,new String[]{"宋江"});
*/
//columns 如果为空,则表示所有列
Cursor cursor = db.query("person", null, "name=?", new String[]{"宋江"}, null, null, null);
while (cursor.moveToNext()) {
int nameIndex = cursor.getColumnIndex("name");
int nickIndex = cursor.getColumnIndex("nickname");
String nameValue = cursor.getString(nameIndex);
String nickValue = cursor.getString(nickIndex);
String s = "name=" + nameValue + ",nickname=" + nickValue;
Toast.makeText(this, s, Toast.LENGTH_SHORT).show();
}
adaper.swapCursor(cursor);
adaper.notifyDataSetChanged();
}
修改(Update)
代码如下:
/**
* 更新
*
* @param v
*/
public void update(View v) {
// String sql="update person set nickname=? where name=?"; ContentValues values = new ContentValues();
values.put("nickname", "及时雨2");
//更新语句受影响的行数
int result = db.update("person", values, "name=?", new String[]{"宋江"});
if (result > 0) {
Toast.makeText(this, "更新成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "更新失败", Toast.LENGTH_SHORT).show();
}
}
删除(Delete)
代码如下:
/**
* 删除
*
* @param v
*/
public void delete(View v) {
//String sql="delete person where name=?"; //受删除语句影响的行数
int result = db.delete("person", "name=?", new String[]{"宋江"});
if (result > 0) {
Toast.makeText(this, "删除成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "没有删除成功", Toast.LENGTH_SHORT).show();
}
}
备注
千里之行,始于足下!
一起学Android之Sqlite的更多相关文章
- Android 操作SQLite基本用法
一.SQLite的介绍 1.SQLite简介 SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入 式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的 ...
- android安卓 SQLite教程:内部架构及SQLite使用办法
SQLite 介绍 SQLite一个非常流行的嵌入式数据库,它支持SQL语言,并且只利用很少的内存就有很好的性能.由于JDBC不适合手机这种内存受限设备,所以Android开发人员需要学习新的API ...
- 学Android开发 这19个开发工具助你顺风顺水
学Android开发 这19个开发工具助你顺风顺水 要想快速开发一个Android应用,通常会用到很多工具,巧妙利用这些工具,能让我们的开发工作事半功倍,节省大量时间,下面大连Android开发培训小 ...
- 【Android】SQLite基本用法(转)
在Android开发中SQLite起着很重要的作用,网上SQLite的教程有很多很多,不过那些教程大多数都讲得不是很全面.本人总结了一些SQLite的常用的方法,借着论坛的大赛,跟大家分享分享的.一. ...
- Android之SQLite数据存储
一.SQLite保存数据介绍 将数据库保存在数据库对于重复或者结构化数据(比如契约信息)而言是理想之选.SQL数据库的主要原则之一是架构:数据库如何组织正式声明.架构体现于用于创建数据库的SQL语句. ...
- android安卓Sqlite数据库实现用户登录注册
看了很多别人写的安卓SQlite数据的操作代码,一点也不通俗易懂,我觉得我写的不错,而且安卓项目也用上了,所以在博客园里保存分享一下!建立一个类 并继承SQLiteOpenHelper public ...
- Android中SQLite数据库小计
2016-03-16 Android数据库支持 本文节选并翻译<Enterprise Android - Programing Android Database Applications for ...
- Android开发学习之路-该怎么学Android(Service和Activity通信为例)
在大部分地方,比如书本或者学校和培训机构,教学Android的方式都基本类似,就是告诉先上原理方法,然后对着代码讲一下. 但是,这往往不是一个很好的方法,为什么? ① 学生要掌握这个方法的用途,只能通 ...
- 菜鸟学Android编程——简单计算器《一》
菜鸟瞎搞,高手莫进 本人菜鸟一枚,最近在学Android编程,网上看了一些视频教程,于是想着平时手机上的计算器应该很简单,自己何不尝试着做一个呢? 于是就冒冒失失的开撸了. 简单计算器嘛,功能当然很少 ...
随机推荐
- sql语句查询执行顺序
http://blog.csdn.net/bitcarmanlee/article/details/51004767
- @SpringBootApplication注解理解
@SpringBootApplication包含三个有用的注解,包括 @SpringBootConfiguration:看源码其实就是@Configuration,表示当前类是一个配置类,就像xml配 ...
- 【转】浏览器输入URL后发生了什么
转自:http://www.cnblogs.com/webdeve/p/7865520.html本文摘要: 输入网址 当我们在浏览器输入网址并回车后,一切从这里开始. 一.DNS域名解析 我们在浏览器 ...
- 剑指Offer_编程题之重建二叉树
题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7, ...
- 解决CentOS 7中php-fpm进程数过多导致服务器内存资源消耗较大的问题
本文由荒原之梦原创,原文链接:http://zhaokaifeng.com/?p=653 什么是php-fpm: php-fpm即FastCGI进程管理器,用于控制php的内存和进程等. 操作环境: ...
- 关于PHP处理Json数据的例子
最近工作需要在原来静态看板(大屏)页面的基础上,实现数据的动态展示,而且需要定时刷新. 接到任务后就马不停蹄的开始修改页面: 显然这个需求最好的解决方法就是用Ajax对后台数据进行定时请求,在前端页面 ...
- BZOJ_3653_谈笑风生_树状数组
BZOJ_3653_谈笑风生_树状数组 Description 设T 为一棵有根树,我们做如下的定义: ? 设a和b为T 中的两个不同节点.如果a是b的祖先,那么称“a比b不知道 高明到哪里去了”. ...
- BZOJ_2561_最小生成树_最小割
BZOJ_2561_最小生成树_最小割 题意: 给定一个边带正权的连通无向图G=(V,E),其中N=|V|,M=|E|,N个点从1到N依次编号,给定三个正整数u,v,和L (u≠v),假设现在加入一条 ...
- cocoapods安装及使用其中 添加新源: gem sources -a https://ruby.taobao.org/
一.概要 iOS开发时,项目中会引用许多第三方库,CocoaPods(https://github.com/CocoaPods/CocoaPods)可以用来方便的统一管理这些第三方库. 二.安装 由于 ...
- 关于throw、throws、try--catch的问题
首先回顾概念 throws表示出现异常的一种可能性,并不一定会发生这些异常 throw则是抛出了异常,执行throw则一定抛出了某种异常 try--catch try语句用大括号{}指定了一段代码,该 ...