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

 */
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. 收集了50道基础的java面试题

    下面的内容是对网上原有的Java面试题集及答案进行了全面修订之后给出的负责任的题目和答案,原来的题目中有很多重复题目和无价值的题目,还有不少的参考答案也是错误的,修改后的Java面试题集参照了JDK最 ...

  2. Vs2012出现停止工作问题的解决方法

    我的VS2012总是出现问题,打开项目会,更改移动控件位置也会,后来在网上找到了解决方法 这是出现问题

  3. Fluent NHibernate example

    http://www.codeproject.com/Articles/26466/Dependency-Injection-using-Spring-NET http://stackoverflow ...

  4. HTML5实现屏幕手势解锁(转载)

    来源:https://github.com/lvming6816077/H5lockhttp://threejs.org/examples/http://www.inf.usi.ch/phd/wett ...

  5. json format validator

    http://la5u.org/archives/542 http://stedolan.github.io/jq/download/ https://linuxtoy.org/archives/jq ...

  6. [Architecture Pattern] Repository实作查询功能

    [Architecture Pattern] Repository实作查询功能 范例下载 范例程序代码:点此下载 问题情景 在系统的BLL与DAL之间,加入Repository Pattern的设计, ...

  7. 【.net程序破解】实战之标志位破解绕过注册法

    今天有时间玩了下一个不错的软件Advanced System Cleaner,可惜要注册 于是想办法给破解了,这是跟之前不同的地方,属于.NET破解教程: 软件地址 - http://www.crsk ...

  8. 身份证校验(c++实现)

    描述: 我国国标[GB 11643-1999]中规定:公民身份号码是18位特征组合码,由十七位数字本体码和一位数字校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码 ...

  9. 配置windows失败,还原更新,请勿关机

    同事叫我帮忙弄一下电脑,开机,出现"配置Windows Update失败,还原更改,请勿关闭计算机",我从来不更新Windows Update,更新都为成功,第一次遇到失败了,不知 ...

  10. 高清HDMI编码器|上海视涛科技

    HDMI编码器(E300)简介 HDMI编码器(E300)是上海视涛科技出品的高性能HDMI+VGA编码产品.该HDMI+VGA编码器是上海视涛科技完全自主研发,并适用于VGA.DVI.HDMI等信号 ...