久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    Androide SQLiteDatabase數據庫操作(轉)

     流浪的星星318 2017-03-27

    SQLite可以解析大部分的標準SQL語句:
    建表語句:create table 表名(主鍵名 integer primary key autoincrement(設置為自增列),其他列名及屬性)或(主鍵名 integer primary key )SQLite數據庫中將所有聲明為“integer primary key”的列自動識別為自增列。 

    查詢語句:select * from 表名 where 條件子句 group by 分組子句 having…order by 排序子句 DESC(降序)(ASC 升序)。

    分頁語句:select * from 表名 limit 記錄數 offset 開始位置

    或者 select * from 表名 limit 開始位置,記錄數

    插入語句:insert into 表名(字段列表) values (值列表)

    更新語句:update 表名 set 字段名=值 where 條件子句

    刪除語句:delete from 表名 where 條件子句

    刪表語句:drop table if exists 表名

    增加字段語句:

    alter table 表名 add column 列名 字段類型

    修改數據庫名稱

    alter table 表名 rename to 新表名

     

    而為了方便對數據庫進行版本管理,建議在開發項目的時候使用SQLiteOpenHelper類,它提供了兩個重要的方法,分別是

    onCreate(SQLiteDatabase db)——用于初次使用軟件時生成數據庫,一旦數據庫存在則不會調用此方法。函數是在第一次創建數據庫的時候執行的,僅僅生成DataBaseHelper對象的時候是不會調用該函數的,而只有當實現DataBaseHelper對象的getReadableDataBase時或者是調用了getWritableDataBase時,如果是第一次創建數據庫,那么就一定會調用onCreate()函數 。

    onUpgrade(SQLiteDatabase db,int oldVersion,int vewVersion)——用于升級軟件時更新數據庫表結構,如增加表、列字段等操作。

    提示一下,在軟件升級前,最好對原有數據進行備份,在新表建好后把數據導入新表中。

    實現了這兩個方法,就可以用他的getWritableDatabase()和getReadableDatabase()來獲得數據庫。

     

    強調下:當第一次創建數據庫時,當實現DataBaseHelper對象的getReadableDataBase時或者是調用了getWritableDataBase時,系統自動調用oncreater()方法(當然程序中也可以調用);

    如果用戶需要升級數據庫表結構,需要主動調用onUpgrade(SQLiteDatabase db,int oldVersion,int vewVersion),傳入一個新的版本的號。

     

    查詢操作:在使用SQLite的進行查詢時最好用占位符“?”來代替各值,注意直接用?而不是'?'。

    例如:
    SQLiteDatabase db=databaseHelper.getWritableDatabase();
    db.execSQL(“update person set name=?,age=? where personid=?”,new Obect{person.getName(),person.getAge(),person.getId()});
    execSQL()方法是用來執行除查找語句外的sql語句,查找語句用rawQuery()來執行它會放回一個Cursor。當然,他還提供了封裝好的Java類方法供我們操作。具體方法不介紹了,可以直接查看文檔中SQLiteDatabase類的用法。

    插入操作:

    插入一行記錄,可以通過三種方式實現:

    第一種,封裝列-值對,調用 db.insert(table, nullColumnHack, values)或者db.insertOrThrow(table, nullColumnHack, values)方法插入,插入成功返回行號,失敗時返回-1.

    ContentValues values=new ContentValues();
            values.put(MyHelper.COUNTRY, "中國");
            values.put(MyHelper.CODE,86);  
            //插入一行數據
            db.insert(MyHelper.TD_NAME, MyHelper.ID, values);

    如果傳入的values為空的話,則將插入一行各列指為NULL或0的數據,(如果列是Integer類型,則0,其它類型為NULL)。

    第二種,組織SQL語句,使用 db.execSQL(String sql)或 db.execSQL(String sql,Object[] data)執行,無返回值。

            String sql1="insert into "
              +MyHelper.TD_NAME+"("
              +MyHelper.COUNTRY+","
              +MyHelper.CODE+")values"
              +"(?,789)";
            String[] data={"Japan"};    
            db.execSQL(sql1, data); 

    第三種,使用update(String table, ContentValues values, String whereClause, String[] whereArgs)

    更新行數據,注意WhereClause為update的where條件,不帶關鍵字where:如:

    SQLiteDatabase db = this.getWritableDatabase();
      String where = BOOK_ID + " = ?";
      String[] whereValue = { Integer.toString(id) };

      ContentValues cv = new ContentValues();
      cv.put(BOOK_NAME, bookname);
      cv.put(BOOK_AUTHOR, author);
      db.update(TABLE_NAME, cv, where, whereValue);

      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 无码日韩精品一区二区人妻| 国产成年码AV片在线观看| 国产高清在线男人的天堂| 好男人好资源WWW社区| 国产一精品一AV一免费爽爽| 午夜毛片不卡免费观看视频| 欧美老少配性行为| 内射女校花一区二区三区| 亚洲欧洲精品日韩av| 西西大胆午夜人体视频| 亚洲 另类 日韩 制服 无码| 亚洲综合精品第一页| 成人午夜在线观看刺激| 国产不卡精品视频男人的天堂 | 黑人巨大AV在线播放无码| 精品一区二区三区自拍图片区 | 日本大片免A费观看视频三区| 久久精品岛国AV一区二区无码| 亚洲一区二区三区无码中文字幕| 亚洲AV永久无码精品三区在线| 无码国模国产在线观看免费| 久久精品人妻无码专区| 亚洲精品乱码久久久久久自慰 | 日本XXXX色视频在线观看免费| 日本高清在线观看WWW色| 不卡一区二区国产在线| 日本高清无卡码一区二区| 红杏亚洲影院一区二区三区| 2021国产精品视频网站| 精品午夜福利在线观看| 中文字幕在线国产精品| 日韩免费码中文在线观看| 国产免费看插插插视频| 五月天天天综合精品无码| 熟妇人妻无码中文字幕| 国产毛1卡2卡3卡4卡免费观看 | 亚洲熟妇无码乱子AV电影| 日韩丝袜欧美人妻制服| A级大胆欧美人体大胆666| 国产日产欧产美韩系列麻豆| 久久精品国产一区二区三区不卡|