将数据库的增删改查单独放进一个包

 */
package com.itheima28.sqlitedemo.dao;
import java.util.ArrayList;
import java.util.List; import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase; import com.itheima28.sqlitedemo.dao.entities.Person;
import com.itheima28.sqlitedemo.db.PersonSQliteOpenHelper;
public class PersonDao {//谁调用我这个操作的包,就传入自己的对象
private PersonSQliteOpenHelper mOpenHelper; //数据库的帮助类对象 public PersonDao(Context context){ //构造函数
mOpenHelper =new PersonSQliteOpenHelper(context);
}
 //插入操作
public void insert(Person person){
//首先连接数据库 这个操作class PersonDao已经做了,用其对象mOpenHelper下的方法
SQLiteDatabase db = mOpenHelper.getWritableDatabase();
//判断数据库是否打开
if(db.isOpen()){ //如果数据库打开,执行添加的操作
//执行添加到数据库的操作 //Object传进来是什么,就是什么,相应前面是什么就写成?
db.execSQL("insert into person(name,age) values(?,?);",new Object[]{person.getName(),person.getAge()});
db.close();//数据库关闭
}
}
 //根据id删除数据
public void delete(int id) {
SQLiteDatabase db = mOpenHelper.getWritableDatabase();//获得可写的数据库对象
if(db.isOpen()){ //如果数据库打开,执行下列操作 //直接传进来id。integer是一个对象类型,int不是。所以不行。
db.execSQL("delete from person where _id=?;",new Integer[]{id});//
db.close();
}
}
 //更新
public void updata(int id,String name){
SQLiteDatabase db = mOpenHelper.getWritableDatabase();//获得可写的数据库对象
if(db.isOpen()){
db.execSQL("updata person set name =? where _id = ?;",new Object[]{name,id});
}
db.close();
}
 //查询所有
public List<Person> queryALL(){
SQLiteDatabase db = mOpenHelper.getWritableDatabase();//获得只读的数据库对象
if(db.isOpen()){
Cursor cursor = db.rawQuery("select * from person;", null); //查询得到“Cursor结果集”
if(cursor !=null && cursor.getCount()>0){//查询集大于0
List<Person> personList = new ArrayList<Person>();//创建一个集合personList
while(cursor.moveToNext()){ //表的游标从上到下移动
int id =cursor.getInt(0);//取第0列---id
String name = cursor.getString(1);//取第1列---name
int age = cursor.getInt(2);//取第2列---age
personList.add(new Person(id,name,age));//将取得的数据装入集合personList
}
db.close();
return personList;//返回这个集合
}
db.close();
}
return null;
}
 //查询一个,例如id
public Person queryItem(int id){ //Person类型
SQLiteDatabase db = mOpenHelper.getWritableDatabase();//获得只读的数据库对象
if(db.isOpen()){ //因为 rawQuery(String, String[])类型所以通过id+""把int id弄成String类型
Cursor cursor= db.rawQuery("select _id,name,age from person where _id=?;",new String[]{id+""} );
if(cursor !=null && cursor.moveToFirst()){//moveToFirst首次找到
int _id = cursor.getInt(0);//得到id
String name= cursor.getString(1);//得到name
int age = cursor.getInt(2);//得到年龄
db.close();
return new Person(_id,name,age);
}
}
return null;
}
}

andriod增、删、改、查的更多相关文章

  1. 好用的SQL TVP~~独家赠送[增-删-改-查]的例子

    以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化.  本系列主要是针对T-SQL的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础] ...

  2. iOS FMDB的使用(增,删,改,查,sqlite存取图片)

    iOS FMDB的使用(增,删,改,查,sqlite存取图片) 在上一篇博客我对sqlite的基本使用进行了详细介绍... 但是在实际开发中原生使用的频率是很少的... 这篇博客我将会较全面的介绍FM ...

  3. iOS sqlite3 的基本使用(增 删 改 查)

    iOS sqlite3 的基本使用(增 删 改 查) 这篇博客不会讲述太多sql语言,目的重在实现sqlite3的一些基本操作. 例:增 删 改 查 如果想了解更多的sql语言可以利用强大的互联网. ...

  4. django ajax增 删 改 查

    具于django ajax实现增 删 改 查功能 代码示例: 代码: urls.py from django.conf.urls import url from django.contrib impo ...

  5. ADO.NET 增 删 改 查

    ADO.NET:(数据访问技术)就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中 也可以将数据库中的数据提取到内存中供程序调用 ADO.NET所有数据访 ...

  6. MVC EF 增 删 改 查

    using System;using System.Collections.Generic;using System.Linq;using System.Web;//using System.Data ...

  7. python基础中的四大天王-增-删-改-查

    列表-list-[] 输入内存储存容器 发生改变通常直接变化,让我们看看下面列子 增---默认在最后添加 #append()--括号中可以是数字,可以是字符串,可以是元祖,可以是集合,可以是字典 #l ...

  8. 简单的php数据库操作类代码(增,删,改,查)

    这几天准备重新学习,梳理一下知识体系,同时按照功能模块划分做一些东西.所以.mysql的操作成为第一个要点.我写了一个简单的mysql操作类,实现数据的简单的增删改查功能. 数据库操纵基本流程为: 1 ...

  9. MongoDB增 删 改 查

    增 增加单篇文档 > db.stu.insert({sn:'001', name:'lisi'}) WriteResult({ "nInserted" : 1 }) > ...

  10. Go语言之进阶篇mysql增 删 改 查

    一.mysql操作基本语法 1.创建名称nulige的数据库 CREATE DATABASE nulige DEFAULT CHARSET utf8 COLLATE utf8_general_ci; ...

随机推荐

  1. Python 3.x自定义迭代器对象

    Python 3.x与Python 2.x之间存在着较多的语法细节差异.今天在看Python核心编程的时候,说到了自定义迭代器对象.于是动手将源码打了一遍,原书代码如下: class AnyIter( ...

  2. 重构13天 抽取方法对象(Extract Method Object)

    理解:本文中的“提取方法对象”是指当你发现一个方法中存在过多的局部变量时,你可以通过使用“提取方法对象”重构来引入一些方法,每个方法完成任务的一个步骤,这样可以使得程序变得更具有可读性. 详解:如下代 ...

  3. 深入.NET内测题

    一 选择题 1)      以下关于序列化和反序列化的描述错误的是( C). a)      序列化是将对象的状态存储到特定存储介质中的过程 b)      二进制格式化器的Serialize()和D ...

  4. 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符

    [源码下载] 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 结构体 ...

  5. LeetCode128:Longest Consecutive Sequence

    题目: Given an unsorted array of integers, find the length of the longest consecutive elements sequenc ...

  6. Dev-Cpp配置OpenGL图形库(成功版本:Dev-Cpp 5.7.1 MinGW 4.8.1)

    ★配置前须知:Dev-Cpp自带OpenGL的使用和OpenGL简介 (附Dev-Cpp下载地址:http://sourceforge.net/projects/orwelldevcpp/?sourc ...

  7. 细说Mysql四种安装方法及自动化部署

    一.简介 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库, 每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据. 我们也可以将数据存储在文件中,但是 ...

  8. 配置文件,环境配置和war报分离,方便生产更改

    在生产环境实现配置文件和war包 的分离,为方便在必要的时候进行一定的更改,可以避免修改包,但是需要重启 最初为这样的选择配置,单不知为何未生效,修改为配置2配置方法,但不灵活,待跟进.配置1: &l ...

  9. .net mysql 支持表情

    1.表 utf8mb4 2.字段  utf8mb4 3.连接字符串 utf8mb4 4.存储过程参数  utf8mb4

  10. 原型 prototype

    原型 prototype js 的对象比较 由于 js 是解释执行的语言, 那么再代码中出现函数与对象如果重复执行, 会创建多个副本 在代码中重复执行的代码容易出现重复的对象 创建一个 Person ...