Android下数据库第一种方式增删改查

    1.创建一个帮助类的对象,调用getReadableDatabase方法,返回一个SqliteDatebase对象



    2.使用SqliteDatebase对象调用execSql()做增删改,调用rawQuery方法做查询。


    特点:增删改没有返回值,不能判断sql语句是否执行成功。sql语句手动写,容易写错







    private MySqliteOpenHelper mySqliteOpenHelper;

    public InfoDao(Context context){

        //创建一个帮助类对象

        mySqliteOpenHelper = new MySqliteOpenHelper(context);



        

    }



    public void add(InfoBean bean){



        //执行sql语句需要sqliteDatabase对象

        //调用getReadableDatabase方法,来初始化数据库的创建

        SQLiteDatabase     db = mySqliteOpenHelper.getReadableDatabase();

        //sql:sql语句,  bindArgs:sql语句中占位符的值

        db.execSQL("insert into info(name,phone) values(?,?);", new Object[]{bean.name,bean.phone});

        //关闭数据库对象

        db.close();

    }



    public void del(String name){





        //执行sql语句需要sqliteDatabase对象

        //调用getReadableDatabase方法,来初始化数据库的创建

        SQLiteDatabase db = mySqliteOpenHelper.getReadableDatabase();

        //sql:sql语句,  bindArgs:sql语句中占位符的值

        db.execSQL("delete from info where name=?;", new Object[]{name});

        //关闭数据库对象

        db.close();



    }

    public void update(InfoBean bean){



        //执行sql语句需要sqliteDatabase对象

        //调用getReadableDatabase方法,来初始化数据库的创建

        SQLiteDatabase db = mySqliteOpenHelper.getReadableDatabase();

        //sql:sql语句,  bindArgs:sql语句中占位符的值

        db.execSQL("update info set phone=? where name=?;", new Object[]{bean.phone,bean.name});

        //关闭数据库对象

        db.close();



    }

    public void query(String name){

        

        //执行sql语句需要sqliteDatabase对象

        //调用getReadableDatabase方法,来初始化数据库的创建

        SQLiteDatabase db = mySqliteOpenHelper.getReadableDatabase();

        //sql:sql语句,  selectionArgs:查询条件占位符的值,返回一个cursor对象

        Cursor cursor = db.rawQuery("select _id, name,phone from info where name = ?", new String []{name});

        //解析Cursor中的数据

        if(cursor != null && cursor.getCount() >0){//判断cursor中是否存在数据

            

            //循环遍历结果集,获取每一行的内容

            while(cursor.moveToNext()){//条件,游标能否定位到下一行

                //获取数据

                int id = cursor.getInt(0);

                String name_str = cursor.getString(1);

                String phone = cursor.getString(2);

                System.out.println("_id:"+id+";name:"+name_str+";phone:"+phone);

            }

            cursor.close();//关闭结果集

            

        }

        //关闭数据库对象

        db.close();



    }

Android下另外一种增删改查方式 

    

    1.创建一个帮助类的对象,调用getReadableDatabase方法,返回一个SqliteDatebase对象



    2.使用SqliteDatebase对象调用insert,update,delete ,query方法做增删改查。


     特点:增删改有了返回值,可以判断sql语句是否执行成功,但是查询不够灵活,不能做多表查询。所以在公司一般人增删改喜欢用第二种方式,查询用第一种方式。


    private MySqliteOpenHelper mySqliteOpenHelper;

    public InfoDao(Context context){

        //创建一个帮助类对象

        mySqliteOpenHelper = new MySqliteOpenHelper(context);

    }



    public boolean add(InfoBean bean){



        //执行sql语句需要sqliteDatabase对象

        //调用getReadableDatabase方法,来初始化数据库的创建

        SQLiteDatabase     db = mySqliteOpenHelper.getReadableDatabase();

        

        

        ContentValues values = new ContentValues();//是用map封装的对象,用来存放值

        values.put("name", bean.name);

        values.put("phone", bean.phone);

        

        //table: 表名 , nullColumnHack:可以为空,标示添加一个空行, values:数据一行的值 , 返回值:代表添加这个新行的Id ,-1代表添加失败

        long result = db.insert("info", null, values);//底层是在拼装sql语句

    

        //关闭数据库对象

        db.close();

        

        if(result != -1){//-1代表添加失败

            return true;

        }else{

            return false;

        }

    }



    public int del(String name){



        //执行sql语句需要sqliteDatabase对象

        //调用getReadableDatabase方法,来初始化数据库的创建

        SQLiteDatabase db = mySqliteOpenHelper.getReadableDatabase();

        

        //table :表名, whereClause: 删除条件, whereArgs:条件的占位符的参数 ; 返回值:成功删除多少行

        int result = db.delete("info", "name = ?", new String[]{name});

        //关闭数据库对象

        db.close();

        

        return result;



    }

    public int update(InfoBean bean){



        //执行sql语句需要sqliteDatabase对象

        //调用getReadableDatabase方法,来初始化数据库的创建

        SQLiteDatabase db = mySqliteOpenHelper.getReadableDatabase();

        ContentValues values = new ContentValues();//是用map封装的对象,用来存放值

        values.put("phone", bean.phone);

        //table:表名, values:更新的值, whereClause:更新的条件, whereArgs:更新条件的占位符的值,返回值:成功修改多少行

        int result = db.update("info", values, "name = ?", new String[]{bean.name});

        //关闭数据库对象

        db.close();

        return result;



    }

    public void query(String name){

    

        //执行sql语句需要sqliteDatabase对象

        //调用getReadableDatabase方法,来初始化数据库的创建

        SQLiteDatabase db = mySqliteOpenHelper.getReadableDatabase();

        

        //table:表名, columns:查询的列名,如果null代表查询所有列; selection:查询条件, selectionArgs:条件占位符的参数值,

        //groupBy:按什么字段分组, having:分组的条件, orderBy:按什么字段排序

        Cursor cursor = db.query("info", new String[]{"_id","name","phone"}, "name = ?", new String[]{name}, null, null, "_id desc");

        //解析Cursor中的数据

        if(cursor != null && cursor.getCount() >0){//判断cursor中是否存在数据

            

            //循环遍历结果集,获取每一行的内容

            while(cursor.moveToNext()){//条件,游标能否定位到下一行

                //获取数据

                int id = cursor.getInt(0);

                String name_str = cursor.getString(1);

                String phone = cursor.getString(2);

                System.out.println("_id:"+id+";name:"+name_str+";phone:"+phone);

                

                

            }

            cursor.close();//关闭结果集

            

        }

        //关闭数据库对象

        db.close();



    }

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

  1. Android学习---数据库的增删改查(sqlite CRUD)

    上一篇文章介绍了sqlite数据库的创建,以及数据的访问,本文将主要介绍数据库的增删改查. 下面直接看代码: MyDBHelper.java(创建数据库,添加一列phone) package com. ...

  2. [Android] SQLite数据库之增删改查基础操作

        在编程中常常会遇到数据库的操作,而Android系统内置了SQLite,它是一款轻型数据库,遵守事务ACID的关系型数据库管理系统,它占用的资源非常低,可以支持Windows/Linux/Un ...

  3. Yii数据库操作增删改查-[增加\查询\更新\删除 AR模式]

    在Yii的开发中常常需要去使用Yii的增删改查方法,这些方法又可以多次变化和组合,带来全方位的实现对数据库的处理,下面对这些方法做一些简单的整理和梳理,有遗漏或是BUG,敬请指出.灰常感谢!!! 一. ...

  4. Django数据库操作(增删改查)

    Django数据库操作(增删改查) 创建数据库中的一个表 class Business(models.Model): #自动创建ID列 caption = models.CharField(max_l ...

  5. spring框架学习之--数据库操作增删改查

    基于spring的NamedParameterJdbcTemplate操作数据库 首先在 resources 文件夹下添加数据库配置文件jdbc.properties 配置常用的数据库信息 consu ...

  6. 安卓 Android 简单数据库(增删改查)

    <Button android:id="@+id/delete_btn" android:layout_width="wrap_content" andr ...

  7. SpringBoot 数据库操作 增删改查

    1.pom添加依赖 <!--数据库相关配置--> <dependency> <groupId>org.springframework.boot</groupI ...

  8. Yii2.0数据库操作增删改查详解

    1.简单查询: one(): 根据查询结果返回查询的第一条记录. all(): 根据查询结果返回所有记录. count(): 返回记录的数量. sum(): 返回指定列的总数. average():  ...

  9. django数据库操作-增删改查-多对多关系以及一对多(外键)关系

    一.一对多(外键) 例子:一个作者对应多本书,一本书只有一个作者 model代码: class Person(models.Model); name = models.CharField('作者姓名' ...

随机推荐

  1. Java初学者作业——计算大庆路小学的面积练习

    返回本章节 返回作业目录 需求说明: 大庆路小学因为装修需要对教室的一侧墙面进行重新粉刷,墙面安装了一面黑板,墙面的长和高以及黑板的长和高. 请编写Java程序计算出需要粉刷的墙面面积.功能要求:输入 ...

  2. Java初学者作业——编写Java程序,在控制台中输入一个数字,要求定义方法实现找出能够整除该数字的所有数字。

    返回本章节 返回作业目录 需求说明: 编写Java程序,在控制台中输入一个数字,要求定义方法实现找出能够整除该数字的所有数字. 实现思路: 定义方法findNums(),用于实现查找所有能够整除指定数 ...

  3. 编写Java程序,编写自定义异常类封装将棋子落在格子中已有棋子的异常

    返回本章节 返回作业目录 需求说明: 完善控制台版五子棋,判断用户所下棋子的位置,是否已经存在棋子,如果已经存在,则抛出用户自定义异常,提示用户该位置已经有棋子. 实现思路: 创建用户自定义异常类Go ...

  4. linux端口开放关闭 firewalld 使用

    systemctl status firewalld # 查看防火墙状态 firewall-cmd --zone=public --add-port=27017/tcp --permanent # m ...

  5. koa路由接口

    const router = require('koa-router')() //返回一个页面 router.get('/', async (ctx, next) => { global.con ...

  6. BitMap算法知识笔记以及在大数据方向的使用

    概述 所谓的BitMap算法就是位图算法,简单说就是用一个bit位来标记某个元素所对应的value,而key即是该元素,由于BitMap使用了bit位来存储数据,因此可以大大节省存储空间,这是很常用的 ...

  7. 【golang学习记录】环境搭建

    [golang学习记录]环境搭建 一. 概述 本文是[golang学习记录]系列文章的第一篇,安装Go语言及搭建Go语言开发环境,接下来将详细记录自己学习 go 语言的过程,一方面是为了巩固自己学到的 ...

  8. [.Net]使用ABP 数据库迁移migration遇到的坑及解决方案

    ​ 问题:在使用Update-Database时,突然出现"数据库中已存在名为 'XXX' 的对象". 检查发现__EFMigrationsHistory表中的MigrationI ...

  9. flume安装及使用

    最近在学习hadoop大数据平台,但是却感觉无从下手,于是看了一些专业的书籍,觉得还是先从下往上为学习也就是从源数据--数据抽取--存储--计算--展示这个路线来学习比较容易一些,所以就先从非结构化数 ...

  10. 《剑指offer》面试题42. 连续子数组的最大和

    问题描述 输入一个整型数组,数组里有正数也有负数.数组中的一个或连续多个整数组成一个子数组.求所有子数组的和的最大值. 要求时间复杂度为O(n). 示例1: 输入: nums = [-2,1,-3,4 ...