一:什么是SQLite?

在Android平台上,集成了一个嵌入式关系型轻量级的数据库。

二:什么时候用的数据库?

有大量相似机构的数据需要存储时。

三:如何创建一个数据库?

1.创建一个SqliteOpenHelper的子类

2.添加一个构造方法,用来指定数据库的名称,版本号

3.实现oncreat 方法,数据库第一次创建时被调用,特别适合做数据表的初始化

4.实现onUpgrade方法,当数据库版本升级时被调用,特别适合做表结构的修改。

5.要创建数据库,需要创建一个帮助类的实例对象,并调用其     getReadableDatabase       getWritableDatabase     方法

实例代码如下:

MyOpenHelpter.java

public class MyOpenHelpter extends SQLiteOpenHelper {
//添加一个构造方法,用来指定数据库的名称,版本号
public MyOpenHelpter(Context context) {
super(context, "userInfo.db", null, 1);
}
//实现oncreat 方法,数据库第一次创建时被调用,特别适合做数据表的初始化
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table info (_id integer primary key autoincrement,name varchar(20),phone varchar(11))");
}
//实现onUpgrade方法,当数据库版本升级时被调用,特别适合做表结构的修改。
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}
}

MainActivity.java

public class MainActivity extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//创建帮助类对象
MyOpenHelpter myOpenHelpter=new MyOpenHelpter(this);
myOpenHelpter.getReadableDatabase();

}

}

getReadableDatabase: 先去获取一个可读可写的数据库对象,如果磁盘空间满了,无法进行写操作,就会以只读的方式打开数据库。
   getWritableDatabase: 直接以读写方式打开数据库,如果磁盘空间满,那么就会报错

四:数据库的增删改查方法

4.1:

1.通过创建一个数据帮助类对象可以创建一个数据库(在帮助类的onCreate方法中创建一个info表,有三个字段)

2.通过帮助类对象获取一个数据库操作对象SQlitDatabase(在主类中)

3.通过SqliteDatabase的一个excuteSql()方法可以执行Sql语句,但是这种方式容易写错,没有返回值,我们不知道执行成功没.

增加:
db.execSQL("insert into info(name,phone) values(?,?);", new Object[] {person. name, person.phone });
删除:
db.execSQL("delete from info where name=?;", new Object[]{name});
更新:
db.execSQL("update info set phone=? where name=?;", new Object[]{person.phone,person. name});
查找:
Cursor cursor = db.rawQuery("select * from info", null);
4.2:
SQlitDatabase提供了insert update delete query 方法可以直接写参数封装sql语句, 这种方式适合做增删改,不太适合做查询,不够灵活
增加:
ContentValues values=new ContentValues();
         values.put( "name",person.name );
         values.put( "phone",person.phone );
          long result=db.insert("info" , null, values);
删除:
int result=db.delete("info", "name= ?" , new String[]{name});
更新:
int result=db.update("info", values, "name= ?" , new String[]{person.name });
查找:
Cursor curson=db.query("info", new String[]{"name" ,"phone" }, nullnullnull , null, "name desc");

五、使用事务操作SQLite数据库

使用SQLiteDatabase的beginTransaction()方法可以开启一个事务,程序执行到endTransaction() 方法时会检查事务的标志是否为成功,如果程序执行到endTransaction()之前调用了setTransactionSuccessful() 方法设置事务的标志为成功则提交事务,如果没有调用setTransactionSuccessful() 方法则回滚事务。

银行转账 执行一件事,要么全部成功,要么全部失败
          //开启事务
          db.beginTransaction();
          try {
               db.execSQL("update account set money= money-200 where name=?",new String[]{"李四"});
               int a = 1/0;//如果执行过程中发现异常 事务会进行回滚
               db.execSQL("update account set money= money+200 where name=?",new String[]{"张三"});
               //设置事务成功标记
               db.setTransactionSuccessful();
          } finally {
               //事务结束
               db.endTransaction();
          }

Android_SQLite数据库增删改查操作的更多相关文章

  1. (转)SQLite数据库增删改查操作

    原文:http://www.cnblogs.com/linjiqin/archive/2011/05/26/2059182.html SQLite数据库增删改查操作 一.使用嵌入式关系型SQLite数 ...

  2. Android SQLite 数据库 增删改查操作

    Android SQLite 数据库 增删改查操作 转载▼ 一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库--SQLite,SQLite3支持NU ...

  3. jmeter-Java-MongoDB 数据库增删改查操作

    在日常测试过程中会发现有些测试数据是通过数据库来获取的,一般常用的数据比如SQL .Oracle,此类数据库jmeter有专门的插件进行使用JDBC,今天跟大家说一说关于Mongodb这个数据库jme ...

  4. SQLite数据库增删改查操作

    一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库——SQLite,SQLite3支持NULL.INTEGER.REAL(浮点数字).TEXT(字符串 ...

  5. Android SQLite数据库增删改查操作

    一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库——SQLite,SQLite3支持NULL.INTEGER.REAL(浮点数字). TEXT(字符 ...

  6. IOS使用FMDB封装的数据库增删改查操作

    // //  DBHelper.h //  LessonStoryBoard // //  Created by 袁冬冬 on 15/10/29. //  Copyright (c) 2015年 袁冬 ...

  7. java连接mysql数据库增删改查操作记录

    1. 连接数据库.得到数据库连接变量 注意连接数据库的时候 (1)打开DB Browser 新建一个Database Driver,注意加入Driver JARs的时候加入的包,我的是mysql-co ...

  8. SpringBoot结合Mybatis 使用 mapper*.xml 进行数据库增删改查操作

    什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架. MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索. MyBa ...

  9. 数据库-增删改查操作SQL实现

    一.数据插入-Insert 1. 插入单条记录 insert into 表名(字段名,字段名,字段名) //当插入所有字段时,字段名可以省略 values('值1','值2','值3'); 2. 插入 ...

随机推荐

  1. js 字符串操作函数

    concat() – 将两个或多个字符的文本组合起来,返回一个新的字符串. indexOf() – 返回字符串中一个子串第一处出现的索引.如果没有匹配项,返回 -1 . charAt() – 返回指定 ...

  2. jstl自定义时间格式

    <fmt:formatDate value='${time}' pattern='yyyy-MM-dd HH:mm:ss'/> <s:iterator>下的<s:prop ...

  3. sk_buff封装和解封装网络数据包的过程详解

    转自:http://www.2cto.com/os/201502/376226.html 可以说sk_buff结构体是Linux网络协议栈的核心中的核心,几乎所有的操作都是围绕sk_buff这个结构体 ...

  4. CPU状态信息us,sy,ni,id,wa,hi,si,st含义

    转自:http://blog.csdn.net/sasoritattoo/article/details/9318893 转自:http://fishermen.iteye.com/blog/1995 ...

  5. 10gRAC vip启动报错CRS-1006 CRS-0215

    为测试一个迁移方案,装了一套10g rac环境,可能是很久没有装过10g的RAC了,整个过程情况不断. 1.在把集群软件和数据库软件都装好之后,用crs_stat检测状态的时候,发现vip的状态不对, ...

  6. SOUI开发者论坛

    http://www.lumaba.cn/forum.php?mod=forumdisplay&fid=2 需要的朋友可以上去交流.

  7. 如何快速找到排好序的数组中最先不连续的数字N

    现在有一大堆自然数组成的小到大数组arr,其中会有123456910  这样就要找到6(最先不连续的数字) 举例:[12356789] 找到3 [012345678] 找到8 第一种:遍历数组判断是否 ...

  8. CozyRSS开发记录12-MVVM,绑定RSS源和数据

    CozyRSS开发记录12-MVVM,绑定RSS源和数据 1.引入MvvmLight MVVM最近貌似在前端那块也挺火的.据说,WPF的程序如果不用MVVM,那跟MFC和winform的,也没啥区别. ...

  9. jq冒泡之——点击其他地方隐藏

    e.stopPropagetion(); <!DOCTYPE html> <html lang="en"> <head> <meta ch ...

  10. Myeclipse打断点太多,不知道怎么一次性全删除

    1.打开Debug模式 2.菜单栏里面的Run.点击Remove all Breakpoints