SQLite数据库以及增删改查的案例
Android使用开源的与操作系统无关的SQL数据库——SQLite
一:在命令行下创建数据库:
1.启动模拟器后,打开命令行,执行adb shell
2.进入所在工程目录
3.执行sqlite3 mydb创建数据库文件
:表示结尾,--表示注解
二:包Android.database.sqlite包含了使用SQLite数据库的所有API
SQL数据库主要概念之一就是Schema——一个关于如何组织数据库的定义
单表定义表明和列表:
public final class FeedReaderContract{
public FeedReaderContract(){
/*Inner class that defines the table contents*/
public static abstract class FeedEntry implements BaseColumns{
public static final String TABLE_NAME="entry";
public static final String COLUMN_NAME_ENTRY_ID="entryid";
public static final String COLUMN_NAME_TITLE="title";
public static final String COLUMN_NAME_SUBTITLE="subtitle";
}
}
使用SQLiteOpenHelper创建数据库
代码案例:
//从SQLiteOpenHelper派生一个类
public class FeedReaderDbHelper extents SQLiteOpenHelper{
public static final int DATABASE_VERSION=1;
public static final String DATABASE_NAME="FeedReader.db";
//构造函数产生一个库
public FeedReaderDbHelper(Context context){super(context,DATABASE_NAME,null,DATABASE_VERSION);}
//重点,库产生之后形成一个表
public void onCreate(SQLiteDatabase db){db.execSQL(SQL_CREATE_ENTRIES);}
public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){
db.execSQL(SQL_DELETE_ENTRIES);onCreate(db);
}
public void onDowngrade(SQLiteDatabase db,int oldVersion,int newVersion){
onUpgrade(db,oldVersion,newVersion);
}
}
//使用以下语句创建数据库助手类对象
FeedReaderDbHelper mDbHelper =new FeedReaderDbHelper(getContext());
插入数据:
代码案例:
//在私有目录产生db,文件和表,然后插入数据
//插入两种方法
SQLiteDatabase db=new mDbHelper.getWritableDatabase();
//Create a new map of values,where column names are the keys
ContentValues values=new ContentValues();
values.put{FeedEntry.COLUMN_NAME_ENTRY_ID,id);
values.put{FeedEntry.COLUMN_NAME_TITLE,title);
values.put{FeedEntry.COLUMN_NAME_CONTENT,content);
//Insert the new row,returning the primary key values of the new row
long new Rowld;
newRowld=db.inset{
FeedEntry.TABLE_NAME,
FeedEntry.COLUMN_NAME_NULLABLE,
values);
查询数据:
代码案例:
SQLiteDatabase db=mDbHelper.getReadableDatabase();
String[] projection={FeedEntry._ID,FeedEntry.COLUMN_NAME_TITLE,FeedEntry.COLUMN_NAME_UPDATED};
String sortOrder=FeedEntry.COLUMN_NAME_UPDATED+"DESC";
Cursor c=db.query{
FeedEntry.TABLE_NAME,//表名
projection,//要查询的列名
selection,//查询条件
selectionArgs,//查询条件的参数
null,//分组条件
null,//分组条件的参数
sortOrder,//排序条件
limit//分页条件
};
在读数值之前,必须要调用move方法,首先调用moveToFirst()方法,游标到了第一个位置,取值就用get()方法,getString(),getLong()....但是get方法要传入index做参数,这个参数可以通过getColumnIndex()和getColumnIndexThrow()方法获取
//指针置首
cursor.moveToFirst();
//根据给定的列名,取值
long itemld=cursor.getLong{
cursor.getColumnIndexOrThrow(FeedReaderContract.FeedEntry_ID)
};
删除数据:
要是想删除一个表里的行,就要提供筛选标准来确定要删除的行。
数据库API提供一个机制来创建筛选标准,来防止SQL注入攻击。
//定义查询的WHERE部分
String selection=FeedReaderContract.FeedEntry.COLUMN_NAME_ENTRY_ID+"LIKE?";
//Specify arguments in placeholder order.
String[] selectionArgs={String.valueOf(rowld)};
//组装SQL语句
//delete()方法中
参数1:表名
参数2:WHERE语句
参数3:要查的字段
db.delete{table_name,selection,selectionArgs);
更新数据:
SQLiteDatabase db=mDbHelper.getReadableDatabase();
//列新的值
ContentValues values=new ContentValues();
values.put(FeedReaderContract.FeedEntry.COLUMN_NAME_TITLE,title);
//根据ID,确定需要update的列
String selection=FeedReaderContract.FeedEntry.COLUMN_NAME_ENTRY_ID+"LIKE?";
String[] selelectionArgs={String.valueOf(rowld)};
//执行update
int count=db.update{
FeedReaderDbHelper.FeedEntry.TABLE_NAME,
values,
selection,
selectionArgs);
使用原生SQL语句:
通过databaseHelper.getWritableDatabase()或getReadableDatabase()获取SQLiteDatabase对象后;
插入数据:
db.execSQL("insert into person(name,age)values(?,?)",new Object[]{"hhj",20});
查询数据:
Cursor cursor=db.rawQuery("select * from person where name like ? and age=?",new String[]{"%ne%","20"});
删除数据:
db.execSQL("delete from person where personid=2");
更新数据:
db.execSQL("update person set name='hhj',age=20 where personid=1"};
SQLite数据库以及增删改查的案例的更多相关文章
- Android中Sqlite数据库进行增删改查
今天这篇文章写Sqlite数据库,通过一个小案例来完整讲一下数据库常见的CRUD操作. 先对知识点总结: SQLite数据库 轻量级关系型数据库 创建数据库需要使用的api:SQLiteOpenHel ...
- android 对sqlite数据库的增删改查等各种操作
转载:http://blog.csdn.net/vrix/article/details/6717090 package com.sqlite.main; import java.io.File; i ...
- Android下利用SQLite数据库实现增删改查
1: 首先介绍如何利用adb查看数据库 1: adb shell 2: cd /data/data/包名/databases 3: sqlite3 数据库 4 接下来就可以进行数据库的sql语法 ...
- Android对Sqlite数据库的增删改查
SqLite 数据库 Google 为我们提供了sqlite相关的api SqLiteOpenHelper 这是一个抽象的类 如果想要使用的话,需要其他的类去继承他 SqLiteDatabase 类 ...
- [Android] SQLite数据库之增删改查基础操作
在编程中常常会遇到数据库的操作,而Android系统内置了SQLite,它是一款轻型数据库,遵守事务ACID的关系型数据库管理系统,它占用的资源非常低,可以支持Windows/Linux/Un ...
- greendao对SQLite数据库的增删改查操作
利用greendao操作数据库时,都是以对象或者对象的list来进行增删改查的操作,操作的结果都是用一个list来接收的!!! 1.增加一条记录 Stu stu01=new Stu();stu01.s ...
- Android学习---SQLite数据库的增删改查和事务(transaction)调用
上一篇文章中介绍了手工拼写sql语句进行数据库的CRUD操作,本文将介绍调用sqlite内置的方法实现CRUD操作,其实质也是通过拼写sql语句. 首先,创建一个新的android项目: 其次,查看代 ...
- andorid SQLite数据库的增删改查 和事务操作
.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android ...
- Android,java,php开发最基本的知识,mysql sqlite数据库的增删改查代理,sql语句
作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985转载请说明出处. 下面是代码: 增加:insert into 数据表(字段1,字段2,字段3) valu ...
随机推荐
- 如何修改 app.config 的配置信息
如何修改 app.config 的配置信息 收藏 最问这个问题的人有点多,其实 .Net 提供了这样的功能我们可以在 app.config 中 userSettings 节点中保存我们的应用程序设置信 ...
- Manacher算法[O(n)]
问题描述: 输入一个字符串,求出其中最大的回文子串.子串的含义是:在原串中连续出现的字符串片段.回文的含义是:正着看和倒着看相同,如abba和yyxyy. 算法基本要点: 首先用一个非常巧妙的方式,将 ...
- kubernetes 1.17.2 结合 Ceph 13.2.8 实现 静态 动态存储 并附带一个实验
关于部署和相关原理 请自行搜索 这里 给出我的操作记录和排查问题的思路 这一节对后面的学习有巨大的作用!!! [root@bs-k8s-ceph ~]# ceph -s cluster: -1a9a- ...
- Redis详解(五)——主从复制
Redis详解(五)--主从复制 面临问题 机器故障.我们部署到一台 Redis 服务器,当发生机器故障时,需要迁移到另外一台服务器并且要保证数据是同步的.而数据是最重要的,如果你不在乎,基本上也就不 ...
- 053、Java中使用for循环实现1~100的累加
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- 005.Delphi插件之QPlugins,IQNotify通知
演示的界面如下,拖动滚动条,百分比圆和进度条也是会跟着动的 主程序的代码如下 unit Frm_Main; interface uses Winapi.Windows, Winapi.Messages ...
- input中name和id的区别
一直很困惑,表单里面input标签有id和name,它们之间到底有什么区别自己很少去想,只知道一般的场景该怎么使用,今天就在网上搜索了一下,自己也总结一下.为什么有了ID还要有Name呢?其实ID就像 ...
- nginx安全参数
Strict-Transport-Security Strict-Transport-Security,简称 HSTS.该响应头用于标识浏览器用 HTTPS 替代 HTTP 的方式去访问目标站点. 我 ...
- C/C++贪心算法解决TSP问题
贪心算法解决旅行商问题 TSP问题(Traveling Salesman Problem,旅行商问题),由威廉哈密顿爵士和英国数学家克克曼T.P.Kirkman于19世纪初提出.问题描述如下: 有若干 ...
- vue左侧菜单的实现
后端实现 django视图def menu(request): menu_list = models.Menu.objects.all().values('id', 'menu_name', 'par ...