Android下資料庫操作——增刪改查

來源:互聯網
上載者:User

標籤:

 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下資料庫操作——增刪改查

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.