Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> android 數據庫的增刪改查的另一種方式,android增刪

android 數據庫的增刪改查的另一種方式,android增刪

編輯:關於android開發

android 數據庫的增刪改查的另一種方式,android增刪


老師筆記

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

    }

package com.itheima.crud;

import android.app.Activity;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;

import com.itheima.crud2.R;
import com.itheima.crud.bean.InfoBean;
import com.itheima.crud.dao.InfoDao;

public class MainActivity extends Activity implements OnClickListener {

    private Context mContext;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mContext = this;
        //創建一個幫助類對象
        MySqliteOpenHelper mySqliteOpenHelper = new MySqliteOpenHelper(mContext);
        //調用getReadableDatabase方法,來初始化數據庫的創建
        SQLiteDatabase db = mySqliteOpenHelper.getReadableDatabase();


        //找到相應控件
        findViewById(R.id.bt_add).setOnClickListener(this);

        findViewById(R.id.bt_del).setOnClickListener(this);
        findViewById(R.id.bt_update).setOnClickListener(this);
        findViewById(R.id.bt_query).setOnClickListener(this);

    }
    @Override
    public void onClick(View v) {
        InfoDao infoDao = new InfoDao(mContext);//創建一個dao對象做增刪改查

        switch (v.getId()) {
        case R.id.bt_add:
            
            InfoBean bean = new InfoBean();
            bean.name = "張三";
            bean.phone ="110";
            boolean result = infoDao.add(bean);
            if(result){
                Toast.makeText(mContext, "添加成功", 0).show();
            }else{
                Toast.makeText(mContext, "添加失敗", 0).show();
            }
            
        
            break;

        case R.id.bt_del:
            
            int del = infoDao.del("張三");
            Toast.makeText(mContext, "成功刪除"+del+"行", 0).show();
            break;

        case R.id.bt_update:
            
            InfoBean bean2 = new InfoBean();
            bean2.name = "張三";
            bean2.phone ="119";
            int update = infoDao.update(bean2);
            Toast.makeText(mContext, "成功修改"+update+"行", 0).show();
            break;


        case R.id.bt_query:
            infoDao.query("張三");
            break;

        default:
            break;
        }

    }




}

 

同一個包下的class  創建數據庫

package com.itheima.crud;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class MySqliteOpenHelper extends SQLiteOpenHelper {

    public MySqliteOpenHelper(Context context) {
        
        //context :上下文   , name:數據庫文件的名稱    factory:用來創建cursor對象,默認為null 
        //version:數據庫的版本號,從1開始,如果發生改變,onUpgrade方法將會調用,4.0之後只能升不能將
        super(context, "info.db", null,1);
    }

    //oncreate方法是數據庫第一次創建的時候會被調用;  特別適合做表結構的初始化,需要執行sql語句;SQLiteDatabase db可以用來執行sql語句
    @Override
    public void onCreate(SQLiteDatabase db) {
        //通過SQLiteDatabase執行一個創建表的sql語句
        db.execSQL("create table info (_id integer primary key autoincrement,name varchar(20),phone varchar(11))");
    }

    //onUpgrade數據庫版本號發生改變時才會執行; 特別適合做表結構的修改
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        //添加一個phone字段
//        db.execSQL("alter table info add phone varchar(11)");
    }

}

 

增刪改查   包名的封裝

package com.itheima.crud.dao;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.itheima.crud.MySqliteOpenHelper;
import com.itheima.crud.bean.InfoBean;

public class InfoDao {


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

    }
}

 

數據的封裝,也用一個包

package com.itheima.crud.bean;

public class InfoBean {

    public  String name;
    public String phone;
}

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved