package com.example.db.dao;
import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.example.db.PersonSQLiteOpenHelper;
import com.example.db.domain.Person;

public class PersonDao {
  //获取dbhelper实例
  private PersonSQLiteOpenHelper helper; 
   // 在构造方法里面完成 helper的初始化
 public PersonDao(Context context)
 {
   helper = new PersonSQLiteOpenHelper(context);
 }
 /**
  * 添加一条记录 ,拿到数据库的第一时间需要把数据库关闭掉
  * @param name 姓名
  * @param number 电话
  */
 public void add(String name,String number){
    SQLiteDatabase db = helper.getWritableDatabase();
    String sql ="这里是添加的sql语句   values(?,?) ";
    //bindArgs 则是一个数组 放添加的值
 Object[] bindArgs ={name,number};
 db.execSQL(sql, bindArgs); 
 db.close(); 
 }

/**
  * 通过调用系统api 添加一条记录 ,拿到数据库的第一时间需要把数据库关闭掉
  * @param name 姓名
  * @param number 电话
  */
 public long adds(String name,String number){
    SQLiteDatabase db = helper.getWritableDatabase();
    /**
     * table 表名
     * nullColumnHack 是否允许数据为空
     * values ConteatValues map 集合
     */
    ContentValues values = new ContentValues();
    values.put("name", name);
    values.put("number", number);
   
    long id = db.insert("sys_user", null, values);
 db.close(); 
 return id;
 }

/**
  * 根据用户名查找信息。查询用getReadableDatabase()  通过 rawQuery()去查询 返回 Cursor 游标
  * @param name 姓名
  * @return true 存在 false 不存在
  */
 public boolean find(String name){
    SQLiteDatabase db = helper.getReadableDatabase();
    String sql ="这里是查询的sql语句   name=? ";
    //bindArgs 则是一个数组 放添加的值
 String[] selectionArgs ={name};
    Cursor cursor =  db.rawQuery(sql, selectionArgs);
    // cursor.moveToNext() 让结果集移动下一行如果移动成功 说明return true,不成功就return false
    boolean result =  cursor.moveToNext();
    //游标也需要释放
    cursor.close();
    db.close();
    return result;
 }
 
 
 /**
  * 修改一条记录
  * @param name 用户名
  * @param newnumber 用户手机号码
  */
 public void update (String name,String newnumber)
 {
   SQLiteDatabase db = helper.getWritableDatabase();
      String sql ="这里是修改的sql语句  set number=? where name=?  ";
      //bindArgs 则是一个数组 放添加的值
   Object[] bindArgs ={name,newnumber};
   db.execSQL(sql, bindArgs); 
      db.close();
 }

/**
  * 通过系统api修改一条记录
  * @param name 用户名
  * @param newnumber 用户手机号码
  */
 public int  updates (String name,String newnumber)
 {
   SQLiteDatabase db = helper.getWritableDatabase();
   /**
    * table 表名
    * values  ContentValues map 集合
    * whereClause 选择条件
    * whereArgs 站位符
    */
   ContentValues values = new ContentValues();
   values.put("newnumber", newnumber);
   //返回的值大于零 语句执行成功
   int num = db.update("sys_user", values, "name =?", new String[] {name}) ;
   db.close();
   return num;
 }

/**
  * 删除一条语句
  * @param name 用户名
  */ 
 public void delete (String name){
   SQLiteDatabase db = helper.getWritableDatabase();
      String sql ="这里是删除的sql语句   name=?  ";
      //bindArgs 则是一个数组 放添加的值
   Object[] bindArgs ={name};
   db.execSQL(sql, bindArgs); 
      db.close();
 }

/**
  * 通过系统api删除一条语句
  * @param name 用户名
  */ 
 public int delets (String name){
   SQLiteDatabase db = helper.getWritableDatabase();
   /**
    * table 表名
    * whereClause 条件
    * whereArgs 占位符
    */
   //返回的值大于零 语句执行成功
  int num = db.delete("sys_user", "name = ?", new String[]{name});
   db.close();
   return num;
 }

/**
  * 返回全部数据信息
  * @return
  */
 public List<Person> findAll()
 {
     SQLiteDatabase db = helper.getReadableDatabase(); 
    
  List<Person> persons = new ArrayList<Person>();
    
     String sql ="查询全部 select * from sys_user";
  //如果没有参数可以写null
  String[] selectionArgs ={null};
  Cursor cursor = db.rawQuery(sql, selectionArgs);
   while(cursor.moveToNext()){
     int id = cursor.getInt(cursor.getColumnIndex("id"));
  String name = cursor.getString(cursor.getColumnIndex("name"));
  String number =cursor.getString(cursor.getColumnIndex("number"));
  Person p = new  Person(id,name,number);
     persons.add(p);
       }
 
   cursor.close();
   db.close();
   return persons;
 }

/**
  * 通过系统api返回全部数据信息
  * @return
  */
 public List<Person> findAlls(){
  
   SQLiteDatabase db = helper.getReadableDatabase(); 
     
   List<Person> persons = new ArrayList<Person>();
   /**
    * table 表名
    * columns 返回具体列名
    * selection 选择条件
    * selectionArgs 选择参数
    * groupBy, having, orderBy 有就写 没有写null
    *
    */
   Cursor cursor =  db.query("sys_user", new String[]{"id","name","number"}, null, null, null, null, null);
    while(cursor.moveToNext()){
       int id = cursor.getInt(cursor.getColumnIndex("id"));
       String name = cursor.getString(cursor.getColumnIndex("name"));
       String number =cursor.getString(cursor.getColumnIndex("number"));
       Person p = new  Person(id,name,number);
          persons.add(p);
             }
    cursor.close();
    db.close();
    return persons;
         }
 
}

实现对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. IOS sqlite数据库增删改查

    1.简单介绍 简单封装sqlite数据库操作类 BaseDB 用于完毕对sqlite的增删改查.使用前先导入libsqlite3.0.dylib库 2.BaseDB.h // // BaseDB.h ...

  4. Android 利用xUtils框架实现对sqllite的增删改查

    首先下载xUtils,下载地址:https://github.com/wyouflf/xUtils  把下载好的文件压缩,把里面的jar包拷进项目中如图所示: 这里新建一个User类进行测试增删改查 ...

  5. 使用C#书写SQLite数据库增删改查语句(以及插入byte[]时遇到的问题总结)

    在没有使用SQLite这种轻量级的数据库之前,只使用过Sqlserver2008进行数据的增删改查,公司使用的是大型的ORACLE数据库,还没有真正的会使用它.那时候觉得数据库很庞大,然而遇到SQLi ...

  6. web项目总结——通过jsp+servlet实现对oracle的增删改查功能

    1.DAO模式 分包:依次建立 entity:实体包,放的是跟oracle数据库中表结构相对应的对象的属性,也就是这个对象有什么 dao:增删改查接口,实现增删改查的具体方法 service:同dao ...

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

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

  8. SQLite数据库增删改查

    一:SQLite数据库简介: SQLite是一种轻量级的关系型数据库,官网:http://www.sqlite.org/. SQLite数据库文件存在于移动设备的一下目录中:data->data ...

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

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

随机推荐

  1. jsp基础知识点——思维导图

    如图 思维导图图片链接 http://www.edrawsoft.cn/viewer/public/s/0b8cd083478732 有道云笔记图片链接 http://note.youdao.com/ ...

  2. Reverse Nodes In K Group,将链表每k个元素为一组进行反转---特例Swap Nodes in Pairs,成对儿反转

    问题描述:1->2->3->4,假设k=2进行反转,得到2->1->4->3:k=3进行反转,得到3->2->1->4 算法思想:基本操作就是链表 ...

  3. LeetCode第[26]题(Java):Remove Duplicates from Sorted Array 标签:Array

    题目难度:Easy 题目: Given a sorted array, remove the duplicates in-place such that each element appear onl ...

  4. js 格式化时间日期函数小结3

    function DateUtil(){}/***功能:格式化时间*示例:DateUtil.Format("yyyy/MM/dd","Thu Nov 9 20:30:37 ...

  5. H5滑动穿透(TODO)

    https://github.com/pod4g/tool/wiki/%E7%A7%BB%E5%8A%A8%E7%AB%AF%E6%BB%9A%E5%8A%A8%E7%A9%BF%E9%80%8F%E ...

  6. Ajax-03 XmlHttpRequest实现Ajax

    概述 Ajax主要就是使用XmlHttpRequest对象来完成请求的操作,该对象在主流浏览器中均存在 XmlHttpRequest对象的主要方法 a. void open(String method ...

  7. golang采坑记 一(http与json)

    http服务端在把json串写入http.ResponseWriter对象的时候我们常用的方式如下: //方法一: func ...(w http.ResponseWriter, r *http.Re ...

  8. C#笔记之 函数可变参数

    (转自:http://blog.csdn.net/jackluangle/article/details/6539278) 其实函数的参数的可变是因为不确定函数的参数大小的原因才使用的.看下面一个列子 ...

  9. TCP与UDP(实时通讯)

    1.TCP使用 导入AsyncSocket资源文件夹,此文件是arc混编,加入库文件,如下图: #import "ViewController.h" #import "A ...

  10. cannot be read or is not a valid ZIP file

    在eclipse下创建 maven 项目,运行 flowable 6.1.2 配置maven之后,下载相应的依赖库. 发现报错: Archive for required library: '/Use ...