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. docker中使用mongodb

    连接mongodb容器,下拉alpine应用测试连接

  2. 使用nginx做反向代理来访问tomcat服务器

    本次记录的是使用nginx来做一个反向代理来访问tomcat服务器.简单的来说就是使用nginx做为一个中间件,来分发客户端的请求,将这些请求分发到对应的合适的服务器上来完成请求及响应. 第一步:安装 ...

  3. Redis——从入门到放弃

    redis简介 Redis is an open source (BSD licensed), in-memory data structure store, used as a database, ...

  4. python三大神器===》装饰器

    1.认识装饰器 如果你经常看我的博客,你已经学会了python的前两大‘神器’(迭代器,生成器),那么什么是装饰器呢?就如字面意义装饰器是对某个事物(通常指函数)进行装饰,让其在不修改任何内部代码的情 ...

  5. Acwing199 余数之和

    原题面:https://www.acwing.com/problem/content/201/ 题目大意:给出正整数n和k,计算j(n, k)=k mod 1 + k mod 2 + k mod 3 ...

  6. CSS - 美化字体 => CSS的-font-smoothin属性优化

    body{     margin: 0;     font-family: Arial, Helvetica, sans-serif;     line-height: 1.2em;     back ...

  7. c++链接mysql5.7

    1.单独安装mysql5.7 phpstudy安装的没有include和lib文件夹2.vs2013中右键属性 项目 - C/C++ - 常规 - 附加包含目录 里面添加 D:\**\include ...

  8. Redis哨兵机制原理

    1.概述 Redis Sentinel是一个分布式系统,为Redis提供高可用性解决方案.可以在一个架构中运行多个 Sentinel 进程(progress), 这些进程使用流言协议(gossip p ...

  9. PlayJava SpringMVC与Struts2杂谈

    一 先做一个简单对比: 1. SpringMVC的入口是Servlet,核心是DispatcherServlet,Struts2是Filter,核心是FilterDispatcher 2. Sprin ...

  10. 六十四、SAP中的内表的9种定义方式

    一.内表一共有9种定义方式,如下: 二.执行如下 *&--------------------------------------------------------------------- ...