SQLite简单归纳

android | 2016-07-27 16:45:07 | 阅读 2418 次 | 评论(0)

    SQLite 數據庫  SQLite 版本控制類 SQLiteOpenHelper

 @Override onCreate();//只有在設備上不存在要獲取的數據庫時才會調用。

 @Override onUpgrade();

    // 在更新表結構時, 只需要修改構造方法中的數據庫版本號,并在onUpgrade()方法中更新表結構的  SQL語句。


 ***************************************************************************

   SQLite數據庫操作類SQLiteDatabase

        1,execSQL() 方法. 可執行除查詢的常規sql語句。二個  @Override 方法。            execSQL(String sql) ;//直接使用SQL語句。

             db.execSQL("INSERT INTO student(name, studyTime, age) VALUES('AAA','2016-07-27',30)");               execSQL(String sql, Object[] bindArgs);//支持占位符?

        db.execSQL("INSERT INTO sudent(name, studeyTime, age) VALUES(?,?,?)", new Object[]{"AAA","2016-07-27",30}); 

       2 rawQuery() 方法 rawQuery(String sql, String[] selectionArgs);

             //sql  為常規SQL語句,如果沒有?占位符, 則第二參數為null; 


      3 insert() 方法 insert(String table, String nullColumnHack, ContentValues values);

         ContentValues values=new ContentValues(); 

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

         db.insert("student", null, values);


 4 delete() 方法 delete(String table, String whereClause, String[] whereArgs); db.delete("student", "name=?", new String[]{"AAAA"}); 


5 update() 方法 update(String table, ContentValues values, String whereClause, String[]whereArgs); ContentValues values=new ContentValues(); values.put("age", 30);//更新的內容 db.update("student", values, "name=?", new String[]{"AAAAA"});


 6 query() 方法 有三個重載方法   

     一, query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy,String having, String orderBy); db.query("student", new String[]{"name"},"age=?", new String[]{"24"},null, null, );   

    二, query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String vaving, String orderBy, String limit) //limit參數允許用戶限制返回的行數。  

 三,query(Boolean distinct, String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit);   //distinct 的布爾類型允許用戶指定是否返回非重復的行。     query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)     

 (方法 1 可以執行3、4、5 的功能。)      (方法 2和方法 6 執行查詢功能。


 ****************************************************************************

     Cursor 查詢的數據結果集。 

 使用Cursor 方法  moveToNext() ; moveToPrevious(); moveToFirst(); moveToLast();

 通過以上方法查行或遍歷行后取對應列值 getInt(), getLong(), getString()... 

 如:cursor.getString(cursor.getColumnIndex("列名"));



 ****************************************************************************

    使用SQLiteQueryBuilder 多表查詢

 SQLiteQueryBuilder builder=new SQLiteQueryBuilder();

 builder.setTables(TABLENAME_1+","+ TABLENAME_2);//設置需要查詢的二個表     builder.appendWhere(TABLENAME_1+"."+NAME+"="+ TABLENAME_2+"."+NAME);//設置關聯條件參 數String builder.query(SQLiteDatabase db,String[] projection, String selection, String[] selectionArgs,     String groupBy, String having, string sortOrder);



 *********************************************************************** 

    數據庫的封裝 ,常用方法。   

    自定義封裝類中建一個靜態的繼承SQLiteOpenHelper幫助類, 封裝好增 刪 改 查的方法,    

 建立與表對應的實體類。    

    在activityj里交互數據。

文章评论,共0条
游客请输入验证码
浏览176322次
最新评论
  • zhouwenyuan:博主可以开发房产APP吗?
  • qunxingw:结合附件,在分表A或B...实验一下宏就理解了
  • qunxingw:这仅是小范围的一种思路,此题是指数级的数据。