Android對Sqlite數據庫的增刪改查


SqLite 數據庫

Google 為我們提供了sqlite相關的api

SqLiteOpenHelper 這是一個抽象的類 如果想要使用的話,需要其他的類去繼承他

SqLiteDatabase 類 暴露出了一系列的方法,為我們對數據庫的操作

實現SqLiteOpenHelper

public class MySqlLiteOpenHelper extends SQLiteOpenHel
    public MySqlLiteOpenHelper(Context context, String
        super(context, dbName, null, version);
    }
    /*
    * 當數據第一次被創建的時候該方法會給執行
    * 這個方法特別適合做表的初始化
    * */
    @Override
    public void onCreate(SQLiteDatabase db) {
    }
    /*
    * 當數據庫的版本升級的時候會執行該方法
    * 這個方法特別適合做表結構的修改
    * 注意:數據庫的版本正能增加不能降低 否則會拋異常
    * */
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVe
    }
}

SqLite 的增刪改查

初始化

private MySqlLiteOpenHelper mySqlLiteOpenHelper;
private SQLiteDatabase sDB;
public final String TAG = "SqLiteActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_sql_lite);
    //這一步操作的時候數據庫並不會被創建
    mySqlLiteOpenHelper = new MySqlLiteOpenHelper(this, "db.db", 1);
    //在這一步操作的時候數據庫才會被讀取或者創建 如果數據庫不存在那么將會在/data/data/對應的包名 下建立一個databases目錄其中包含剛剛創建的數據庫以及其緩存文件
    sDB = mySqlLiteOpenHelper.getWritableDatabase();
}

insert

//執行插入操作
@RequiresApi(api = Build.VERSION_CODES.N)
public void insert(View v) {
    try {
        /*
        * 通過sql語句來插入數據
        * 注意:下面是兩種占位符的方式 如果是通過format方法來進行占位符操作需要對【單引號】使用【''】 		 * 進行轉義
        * 如果是通過exceSql方法進行拼接的話那么 是不需要加 【單引號】的
        * */
        //兩種拼接sql語句的方式
        String sql = MessageFormat.format("insert into userinfo (username,password) 					values(''{0}'',''{1}'')", "天王2121", "專刊需求到");
        sDB.execSQL("insert into userinfo (username,password) values(?,?)", new String[]{"天王		1", "專刊需求到"});
        //執行sql語句
        sDB.execSQL(sql);
      
      
        //如果sql語句不太熟練可以通過Google提供的方法進行插入操作
        ContentValues values = new ContentValues();
        values.put("username", "tianwang12121gaidihu");
        values.put("password", "baotazhenheyao");
        
        /*
        * 執行插入
        * 第二個參數是:如果為null 那么 如果values 是null 的話那么就會 向 數據庫中插入一條null 行,如		* 果是可以的話 該參數一般為null 即可
        * 返回值:返回主鍵的值 如果插入失敗那么返回-1
        * */
        long pk= sDB.insert("userinfo", null, values);
        values.clear();
        Toast.makeText(this, "insert successfully!", Toast.LENGTH_SHORT).show();
    } catch (Exception e) {
        Log.i(this.TAG, e.toString());
    }
}

Delete

public void delete(View v) {
    //執行刪除操作
    try {
        //返回被刪除的行數
        int count = this.sDB.delete("userinfo", "username='天王2121'", null);
        Toast.makeText(this, String.valueOf(count), Toast.LENGTH_SHORT).show();
    } catch (Exception e) {
        Log.i(this.TAG, e.toString());
    }
}

Update

 //執行更新操作
 public void update(View v) {
     //需要進行修改的內容
     ContentValues values = new ContentValues();
     values.put("password", "123456");
     //參數: 需要進行更新操作的表 , 需要更新的內容, 過濾條件 ,過濾條件的值
     //返回值: 返回受營銷的行數
     int count = this.sDB.update("userinfo", values, "_id>100", null);
     values.clear();
     Toast.makeText(this, String.valueOf(count), Toast.LENGTH_SHORT).show();
 }

Query

//數據庫的查詢操作
public void select(View v) {
    Cursor cursor = null;
    //通過sql語句直接查詢
    //String sql = "select * from userinfo where _id>100";
    //cursor = this.sDB.rawQuery(sql, null);
    //通過Google提供的方法來進行查詢操作
    cursor = this.sDB.query("userinfo", new String[]{"_id", "username", "password"}, "_id > 100", null, null, null, null);
    if (cursor != null) {
        //打印獲取到的內容
        while (cursor.moveToNext()) {
            Log.i(this.TAG, cursor.getString(cursor.getColumnIndex("_id")));
            Log.i(this.TAG, cursor.getString(cursor.getColumnIndex("username")));
            Log.i(this.TAG, cursor.getString(cursor.getColumnIndex("password")));
        }
    } else {
        Toast.makeText(this, "我就是null了", Toast.LENGTH_SHORT).show();
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM