zoukankan      html  css  js  c++  java
  • Android下数据库操作——增删改查

     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();

        }

  • 相关阅读:
    斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时10
    斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时8&&9
    斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时7
    斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时6
    sprintf()函数用法
    openssl生成签名与验证签名
    PHP_EOL换行 与 base64编码
    grep配置颜色显示
    curl发送json格式数据
    sublime text3作为php开发IDE
  • 原文地址:https://www.cnblogs.com/xufengyuan/p/5698487.html
Copyright © 2011-2022 走看看