一:什么是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. linux常用命令备忘

    scp使用非默认端口 scp -P port username@.....IP:/dir 要拷贝到的地方

  2. Jquery的$(selector).each()和$.each()原理和区别

    我们都用过Jqurey中的each函数,都知道each()有两种方式去调用,一种是通过$.each()调用,另一种是$(selector).each()去调用,那么它们之间有什么区别? 翻看一下Jqu ...

  3. 【leetcode】House Robber

    题目简述 You are a professional robber planning to rob houses along a street. Each house has a certain a ...

  4. git客服端基本操作

    以下操作基于git+gerrit 1.生成公钥 ssh -keygen -t rsa 默认公钥生成路径  C:\Documents and Settings\用户名\.ssh 2.配置姓名和邮箱地址 ...

  5. PHP常用函数、数组方法

    常用函数:rand(); 生成随机数rand(0,50); 范围随机数时间:time(); 取当前时间戳date("Y-m-d H:i:s"); Y:年 m:月份 d:天 H:当前 ...

  6. hive学习笔记

    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...

  7. 关于Telerik RadGridView 数据列拖动后异常的一种情况

    目的: 想实现带有复杂表头(ColumnHeader)的列的动态加载,写了一个用户控件. 问题: 动态加载成功了,显示正常,滚动条也正常,但是一旦进行列的拖动操作之后,程序就挂掉了. 解决尝试: 反复 ...

  8. Gridview样式的CSS控制

    页面代码: .<asp:GridView ID="gvCustomres" runat="server" . DataSourceID="cus ...

  9. mysql 数据库可以非本地访问

      GRANT ALL PRIVILEGES ON 数据库名.* TO root@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;

  10. spark 2.0 中 pyspark 对接 Ipython

    pyspark 2.0 对接 ipython 在安装spark2.0 后,以往的对接ipython方法失效,会报如下错错误: 因为在spark2.0后对接ipython的方法进行了变更我们只需要在py ...