日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android——SQLite实现面向对象CRUD

發布時間:2025/1/21 Android 88 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android——SQLite实现面向对象CRUD 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? ?android中SQLite的使用,事實上倒也不難。可是與JDBC操作數據庫相比,這個還是有點不順手,并且我好久沒寫底層的封裝了,使用SSM框架這些都不須要考慮......好了,廢話不多說。以下直接建立一個測試project來試試SQLite在Android中的應用吧。


1、新建一個project




2、配置junit測試環境

打開AndroidManifest.xml文件,進行jUnit相關配置,詳細例如以下圖:



3、源代碼

? ? ? ? 關于在Android中怎樣使用SQLite的文章非常多,我也是參考那些文章進行學習的。

作為一個J2EE方向的開發人員,我習慣于面向對象進行編程,而老羅的視頻以及一些其它的教程關于CRUD操作使用的都是字符串,這我有點不適應,全部我在學習的過程中就改成了面向對象的CRUD操作。這樣用著也方便點。原理、API什么的我就不說了。百度一下嗖嗖的都出來了,以下直接貼代碼(完整project下載。點這里):

? ? ? 這樣一個繼承SQLiteOpenHelper的類主要就這么幾個功能:

? ? ? ? ? ?a.創建數據庫和表

? ? ? ? ? ?b.假設數據庫有不同版本號那么就會更新數據庫

? ? ? ? ? ?c.調用的這個類的對象來取得數據庫的讀寫權限


package com.example.db;import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper;public class DBHelper extends SQLiteOpenHelper {private static final String DATABASE_NAME = "test.db";private static final int DATABASE_VERSION = 1;public DBHelper(Context context) {// CursorFactory設置為null,使用默認值super(context, DATABASE_NAME, null, DATABASE_VERSION);}// 數據庫第一次被創建時onCreate會被調用@Overridepublic void onCreate(SQLiteDatabase db) {String sql = "CREATE TABLE IF NOT EXISTS person "+ "(id INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR(32),sex VARCHAR(8))";db.execSQL(sql);}// 假設DATABASE_VERSION值被改為2,系統發現現有數據庫版本號不同,即會調用onUpgrade@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {db.execSQL("ALTER TABLE base_info ADD COLUMN other STRING");} }
能夠看到上面創建了一個叫test.db的數據庫。當中有一個表person,表中有三個字段:主鍵-id。姓名-name,性別-sex。


以下生成這個表相應的實體類:

package com.example.pojo;public class Person {private int id;private String name;private String sex;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}@Overridepublic String toString() {return "Person [id=" + id + ", name=" + name + ", sex=" + sex + "]";}}

我們要實現CRUD操作,那么建一個接口定義CRUD方法:

package com.example.dao;import com.example.pojo.Person;public interface IPersonDao {public boolean insert(Person person);public boolean delete(int id);public boolean update(Person person);public Person select(int id); }

以下要實現IPersonDao接口。定義詳細的業務方法:

package com.example.dao.impl;import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase;import com.example.dao.IPersonDao; import com.example.db.DBHelper; import com.example.pojo.Person;public class PersonDaoImpl implements IPersonDao {DBHelper helper = null;public PersonDaoImpl(Context context){helper = new DBHelper(context);}@Overridepublic boolean insert(Person person) {boolean flag = false;SQLiteDatabase database = null;try {String sql = "INSERT INTO person(name,sex) VALUES (?,?)";database = helper.getWritableDatabase();database.execSQL(sql, new Object[]{person.getName(),person.getSex()});flag = true;} catch (Exception e) {e.printStackTrace();}finally{if(database!=null){database.close();}}return flag;}@Overridepublic boolean delete(int id) {boolean flag = false;SQLiteDatabase database = null;try {String sql = "DELETE FROM person WHERE id=?";database = helper.getWritableDatabase();database.execSQL(sql, new Object[]{Integer.toString(id)});flag = true;} catch (Exception e) {e.printStackTrace();}finally{if(database!=null){database.close();}}return flag;}@Overridepublic boolean update(Person person) {boolean flag = false;SQLiteDatabase database = null;try {String sql = "UPDATE person set name=? , sex=? where id=?";database = helper.getWritableDatabase();database.execSQL(sql, new Object[]{person.getName(),person.getSex(),person.getId()});flag = true;} catch (Exception e) {e.printStackTrace();}finally{if(database!=null){database.close();}}return flag;}@Overridepublic Person select(int id) {Person person = new Person();SQLiteDatabase database = null;try {String sql = "SELECT * FROM person where id=?";database = helper.getReadableDatabase(); Cursor cursor = database.rawQuery(sql, new String[]{Integer.toString(id)});while(cursor.moveToNext()){int _id = cursor.getInt(cursor.getColumnIndex("id"));String _name = cursor.getString(cursor.getColumnIndex("name"));String _sex = cursor.getString(cursor.getColumnIndex("sex"));person.setId(_id);person.setName(_name);person.setSex(_sex);}} catch (Exception e) {e.printStackTrace();}finally{if(database!=null){database.close();}}return person;}}
以上完畢之后就能夠開始單元測試了。綠色......

package com.example.test;import com.example.dao.IPersonDao; import com.example.dao.impl.PersonDaoImpl; import com.example.pojo.Person;import android.test.AndroidTestCase; import android.util.Log;public class Test extends AndroidTestCase {public void insertDB(){IPersonDao personDao = new PersonDaoImpl(getContext());Person person = new Person();person.setName("李四");person.setSex("男");personDao.insert(person);}public void selectDB(){IPersonDao personDao = new PersonDaoImpl(getContext());Person person = personDao.select(1);Log.i("info", person.toString());}public void updateDB(){IPersonDao personDao = new PersonDaoImpl(getContext());Person person = personDao.select(1);person.setName("改名字啦");person.setSex("不詳");personDao.update(person);}public void deleteDB(){IPersonDao personDao = new PersonDaoImpl(getContext());personDao.delete(2);}}


導出test.db文件。在SQLite Expert中打開:



這是insert測試成功的樣例。其它就不放圖了,這個軟件百度就能夠下載了。



(轉載注明出處:http://blog.csdn.net/zhshulin)

總結

以上是生活随笔為你收集整理的Android——SQLite实现面向对象CRUD的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 一级特黄妇女高潮2 | 色很久 | 日韩黄色片免费看 | 日韩精品一区二区在线播放 | www.日韩在线观看 | 色哟哟导航 | 青青青免费在线 | 国产乱人乱精一区二视频国产精品 | 爱豆国产剧免费观看大全剧集 | 国产91av视频 | 欧类av怡春院 | 丰满少妇xoxoxo视频 | 麻豆传媒网站入口 | 亚洲成人黄色在线观看 | 高清视频在线免费观看 | 国产美女一级视频 | 熟妇人妻精品一区二区三区视频 | 黄色网址大全免费 | 中国免费一级片 | 99er在线观看 | 欧美日韩一区二区三区四区 | 尹人久久 | 在线观看免费中文字幕 | 国产叼嘿视频在线观看 | 国产大片一区二区 | 美女扒开粉嫩尿口 | 国产美女视频一区二区 | 可以免费看毛片的网站 | 丝袜美女啪啪 | 免费在线黄色av | 另类捆绑调教少妇 | 国产不卡一区二区视频 | 精品国内自产拍在线观看视频 | 玉米地疯狂的吸允她的奶视频 | 粗大黑人巨茎大战欧美成人 | www日本com | 99视频一区二区 | 久久久久国产精品夜夜夜夜夜 | 免费九九视频 | 欧美色图久久 | 久久久资源网 | 熟妇女人妻丰满少妇中文字幕 | 精品久久久久久无码人妻 | 青青青国产在线 | 91丨porny丨 | 国产精品后入内射日本在线观看 | 毛茸茸成熟亚洲人 | 国产成人综合久久 | 一区二区三区精品国产 | 亚洲18在线看污www麻豆 | 欧美成年人 | 日韩av在线导航 | 国产精品嫩草影院桃色 | 成人做爰69片免费看 | 国产精品区在线 | 日本黄色中文字幕 | 国产肥熟| 日韩少妇激情 | 三日本三级少妇三级99 | 高潮无码精品色欲av午夜福利 | 看av网站| 国产激情视频一区二区 | 久久亚洲国产成人精品性色 | 射黄视频 | 中国少妇乱子伦视频播放 | 日韩精品久久久久久久酒店 | 精品人妻少妇嫩草av无码 | 一区二区三区精品免费视频 | 日韩欧美色图 | 国产精品我不卡 | 成人在线视频一区 | 久草资源网 | 污污的视频网站在线观看 | 五月婷婷丁香网 | 久久精品牌麻豆国产大山 | 久久久最新 | 国产精品国产一区 | 91九色中文 | а√天堂中文在线资源8 | 99精品热视频 | 极品三级 | 图片区亚洲色图 | 毛片网在线 | 91日本精品 | 中国二级毛片 | 久久婷婷丁香 | 国产精品第3页 | 东京av在线| 伊人网在线视频观看 | 激情综合六月 | 超碰免费在线播放 | 精品一区二区人妻 | 国产偷拍一区二区三区 | 不卡福利视频 | 成人黄色动漫在线观看 | 国产视频精品久久 | 国产一二三在线视频 | www.一区二区三区四区 | 国产成人久久精品流白浆 |