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数据库以及增删改查的案例的更多相关文章

  1. Android中Sqlite数据库进行增删改查

    今天这篇文章写Sqlite数据库,通过一个小案例来完整讲一下数据库常见的CRUD操作. 先对知识点总结: SQLite数据库 轻量级关系型数据库 创建数据库需要使用的api:SQLiteOpenHel ...

  2. android 对sqlite数据库的增删改查等各种操作

    转载:http://blog.csdn.net/vrix/article/details/6717090 package com.sqlite.main; import java.io.File; i ...

  3. Android下利用SQLite数据库实现增删改查

    1: 首先介绍如何利用adb查看数据库 1: adb shell 2: cd /data/data/包名/databases 3:  sqlite3 数据库 4   接下来就可以进行数据库的sql语法 ...

  4. Android对Sqlite数据库的增删改查

    SqLite 数据库 Google 为我们提供了sqlite相关的api SqLiteOpenHelper 这是一个抽象的类 如果想要使用的话,需要其他的类去继承他 SqLiteDatabase 类 ...

  5. [Android] SQLite数据库之增删改查基础操作

        在编程中常常会遇到数据库的操作,而Android系统内置了SQLite,它是一款轻型数据库,遵守事务ACID的关系型数据库管理系统,它占用的资源非常低,可以支持Windows/Linux/Un ...

  6. greendao对SQLite数据库的增删改查操作

    利用greendao操作数据库时,都是以对象或者对象的list来进行增删改查的操作,操作的结果都是用一个list来接收的!!! 1.增加一条记录 Stu stu01=new Stu();stu01.s ...

  7. Android学习---SQLite数据库的增删改查和事务(transaction)调用

    上一篇文章中介绍了手工拼写sql语句进行数据库的CRUD操作,本文将介绍调用sqlite内置的方法实现CRUD操作,其实质也是通过拼写sql语句. 首先,创建一个新的android项目: 其次,查看代 ...

  8. andorid SQLite数据库的增删改查 和事务操作

    .xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android ...

  9. Android,java,php开发最基本的知识,mysql sqlite数据库的增删改查代理,sql语句

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985转载请说明出处. 下面是代码: 增加:insert into 数据表(字段1,字段2,字段3) valu ...

随机推荐

  1. redis数据导入与导出以及配置使用

    最近在研究redis 遇到redis requires Ruby version >= 2.2.2问题 解决办法是 先安装rvm,再把ruby版本提升至2.3.3 1.安装curl sudo y ...

  2. 2020/2/21 fiyocms代码审计

    0x00 前言 上午上了网课,一上午就装好了cms,下午还有网课,要是结束的早就进行审计. 解决了一下phpstudy使用过程中: Forbidden You don't have permissio ...

  3. 20190108PLC学习心得

    应该是数据类型不对 F1查看了帮助文件以后 ,看到 LD应该是用指针类型的数据 改正以后 LD0下的红线消失了 .       绿色 代表没有给 符号 定义 地址     假设 我现在给 符号 字节数 ...

  4. HDU 5501:The Highest Mark 01背包

    The Highest Mark  Accepts: 71  Submissions: 197  Time Limit: 2000/1000 MS (Java/Others)  Memory Limi ...

  5. HihoCoder第十一周:树中的最长路

    #1050 : 树中的最长路 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 上回说到,小Ho得到了一棵二叉树玩具,这个玩具是由小球和木棍连接起来的,而在拆拼它的过程中, ...

  6. golang开启随机端口并获取端口

    listener, err := net.Listen("tcp", ":0") if err != nil { panic(err) } fmt.Printl ...

  7. HTML的文档结构与语法(一)

    一.走进Web开发 Web运行的原理: 二.HTML 1.1什么是html HTML是用来描述网页的一种语言 HTML指的是超文本标记语言(Hyper Text Markup Language) 超文 ...

  8. 【踩坑记录】记录一次使用Python logging库多进程打印日志的填坑过程

    背景: 项目使用Python自带的logging库来打印日志 项目部署在一台Centos7的机器上 项目采用gunicorn多进程部署 过程: 1.LOG日志代码封装: 采用logging库,并设置w ...

  9. 一百零八、SAP的OO-ALV之二,创建屏幕Screen

    一.在资源管理器,右键->创建屏幕 二.输入4位数字 三.输入屏幕的描述 四.在逻辑流里面PBO用于显示屏幕,PAI用于用户交互. 五.在元素清单里面,在屏幕中的所有元素都是在元素清单中的

  10. 利用ThoughtWorks.QRCode生成二维码

    一.项目添加ThoughtWorks.QRCode.dll和System.Drawing.dll的引用 二.创建二维码公共处理类(QRCodeHandler.cs) /// <summary&g ...