數(shù)據(jù)存儲之 SQLite 數(shù)據(jù)庫操作(二)_第1頁
數(shù)據(jù)存儲之 SQLite 數(shù)據(jù)庫操作(二)_第2頁
數(shù)據(jù)存儲之 SQLite 數(shù)據(jù)庫操作(二)_第3頁
數(shù)據(jù)存儲之 SQLite 數(shù)據(jù)庫操作(二)_第4頁
數(shù)據(jù)存儲之 SQLite 數(shù)據(jù)庫操作(二)_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、上一講我們講解了SQLite數(shù)據(jù)庫的創(chuàng)建數(shù)據(jù)存儲之 SQLite 數(shù)據(jù)庫操作(一,還有更新的操作,這一講我們來講解一下數(shù)據(jù)庫的增刪改查,這邊的程序是對上一個程序進行修改,建議結(jié)合上一講內(nèi)容進行學(xué)習(xí)。1. SQLiteDatabase介紹 1. 在 SQLiteOpenHelper 類中,調(diào)用getWritableDatabase(方法也會完成創(chuàng)建或者打開數(shù)據(jù)庫的操作主要是用來讀和寫,它返回的類型是 :SQLiteDatabase,下面我們就來看一下這個類的介紹查看其 API介紹   這個類主要是用來管理數(shù)據(jù)庫,它有一些方法來完成創(chuàng)建,刪除,執(zhí)行SQL語句

2、,還有執(zhí)行其他相同數(shù)據(jù)庫管理的任務(wù)。查看相關(guān)方法   可以發(fā)現(xiàn)這個類里面的方法很多都是用來維護數(shù)據(jù)庫的,類似查詢等。   查看這個 public void execSQL (String sql, Object bindArgs 方法用來執(zhí)行一個SQL語句,在這個方法說明中,Android建議我們使用以下這種方式來進行對數(shù)據(jù)庫的增刪改查的。   insert(String, String, ContentValues   insertOrThrow(String, String, ContentValues

3、0;  insertWithOnConflict(String, String, ContentValues, int同理還有其他操作數(shù)據(jù)庫的操作,詳情請參考api文檔   【備注】:這種對數(shù)據(jù)庫的操作方式是 Android 官方給我們建議的,我們會在下一講中介紹這種方式,在這一講中,下面的例子操作數(shù)據(jù)庫的方式主要是使用數(shù)據(jù)庫的 SQL語句。2. 程序?qū)崿F(xiàn)1. 布局文件 activity_main.xml 這里就不貼出來,主要幾個按鈕的定義2. DBOpenHelper.java 用來對數(shù)據(jù)庫進行創(chuàng)建和更新,上一講對這個文件有詳細(xì)講解,如有不懂,建議查看

4、上一講內(nèi)容。java view plaincopy1. package2.   3. import4. import5. import6.   7. public class DBOpenHelper extends SQLiteOpenHelper   8.   9.     private static String name = "mydb.db&qu

5、ot; / 表示數(shù)據(jù)庫的名稱  10.     private static int version = 1; / 表示數(shù)據(jù)庫的版本號  11.   12.     public DBOpenHelper(Context context   13.       

6、;  super(context, name, null, version;  14.         / TODO Auto-generated constructor stub  15.       16.   17.     / 當(dāng)數(shù)據(jù)庫創(chuàng)建的時候,是第

7、一次被執(zhí)行,完成對數(shù)據(jù)庫的表的創(chuàng)建  18.     Override  19.     public void onCreate(SQLiteDatabase db   20.         / TODO Auto-generated method stub  21. 

8、60;       / SQLite 數(shù)據(jù)創(chuàng)建支持的數(shù)據(jù)類型: 整型數(shù)據(jù),字符串類型,日期類型,二進制的數(shù)據(jù)類型  22.         / 數(shù)據(jù)庫這邊有一個特點,就是SQLite數(shù)據(jù)庫中文本類型沒有過多的約束,也就是可以把布爾類型的數(shù)據(jù)存儲到文本類型中,這樣也是可以的  23.        &

9、#160;String sql = "create table person(id integer primary key autoincrement,name varchar(64,address varchar(64,sex varchar(8"  24.         db.execSQL(sql; / 完成數(shù)據(jù)庫的創(chuàng)建 

10、; 25.       26.   27.     Override  28.     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion   29.      

11、60;  / TODO Auto-generated method stub  30.       31.   32.   3. PersonService.java 定義增刪改查接口java view plaincopy1. package2.   3. import4. import5.   6.   7. /* 8.  *

12、 定義好增刪改查接口 9.  * author xukunhui 10.  * 11.  */  12. public interface PersonService   13.   14.     public boolean addPersion(Object params;   15.   &

13、#160;   16.     public boolean deletePerson(Object params;  17.       18.     public boolean updatePerson(Object params;  19.       20.

14、     /使用 Map   做一個封裝,比如說查詢數(shù)據(jù)庫的時候返回的單條記錄  21.     public Map  viewPerson(String selectionArgs;   22.       23.     /使用 List >  做一個封裝,比如說查詢數(shù)據(jù)庫的時候返回的多條記錄&#

15、160; 24.     public List > listPersonMaps(String selectionArgs;   25.   4. PersonDao.java 實現(xiàn)增刪改查功能java view plaincopy1. package2.   3. import4. import5. import6. import7.   8. import9. import10. import11.  &

16、#160;12. import13. import14.   15.   16. /* 17.  * 數(shù)據(jù)庫的訪問工具類 18.  * 實現(xiàn)定義好的增刪改查接口 19.  * author xukunhui 20.  * 21.  */  22. public class PersonDao implements PersonService 

17、60; 23.   24.     /獲得 helper對象用來操縱數(shù)據(jù)庫  25.     private DBOpenHelper helper = null;  26.     public PersonDao(Context context   27.     

18、    helper = new DBOpenHelper(context;  28.       29.   30.     /* 31.      * 下面四個方法實現(xiàn)對數(shù)據(jù)庫的增刪改查功能  32.      */  33.

19、       34.     Override  35.     public boolean addPersion(Object params   36.         boolean flag = false;  37.   

20、;      SQLiteDatabase database = null;  38.         try   39.             /這里面問好表示占位符,所以要需要傳入所有的占位符的值,傳入值有這個方法中的參數(shù)傳遞  40

21、.             String sql = "insert into person(name,address,sex values(?,?,?"  41.             database = helper.getWrit

22、ableDatabase(; /實現(xiàn)對數(shù)據(jù)庫寫的操作  42.             database.execSQL(sql, params;  43.             flag = true;  44.    

23、60;     catch (Exception e   45.             e.printStackTrace(;  46.          finally   47.     

24、60;       if(database != null   48.                 database.close(;  49.             

25、0; 50.           51.         return flag;  52.       53.   54.     Override  55.     public boo

26、lean deletePerson(Object params   56.         boolean flag = false;  57.         SQLiteDatabase database = null;  58.     

27、60;   try   59.             String sql = "delete from person where id = ? "  60.           

28、;  database = helper.getWritableDatabase(;  p 61.             database.execSQL(sql, params;   62.             flag = true;

29、60;             63.          catch (Exception e   64.             e.printStackTrace(;  65. 

30、0;        finally   66.             if(database != null   67.                 da

31、tabase.close(;  68.               69.           70.         return flag;  71.       7

32、2.   73.     Override  74.     public boolean updatePerson(Object params   75.         boolean flag = false;  76.      &

33、#160;  SQLiteDatabase database = null;  77.         try   78.             String sql = "update person set name 

34、;= ?, address = ?, sex = ? where id = ? "  79.             database = helper.getWritableDatabase(;  80.        

35、;     database.execSQL(sql, params;  81.             flag = true;  82.          catch (Exception e   83.  

36、;           e.printStackTrace(;  84.          finally   85.             if(database != null  &#

37、160;86.                 database.close(;  87.               88.           89.   

38、      return flag;  90.        91.   依據(jù)國家的方針、政策和各級教育部門的要求,根據(jù)我校實際情況,本學(xué)期不斷完善學(xué)校各項規(guī)章制度,形成學(xué)校科學(xué)有效的制度體系。使學(xué)校各項工作都有章可循,嚴(yán)格按制度辦事,規(guī)范學(xué)校的辦學(xué)行為,提高教師的育人素質(zhì),使學(xué)校的各項工作科學(xué)、規(guī)范、有效,圍繞    “促進發(fā)展”為工作重點,努力打造平安和諧校園、綠色書香校園,健康禮儀

39、智慧校園,進一步樹立為學(xué)生發(fā)展奠基,為教師成長搭臺和為社會進步服務(wù)的辦學(xué)思想。下面對本學(xué)期工作作如下總結(jié):根據(jù) Id 號來查詢,查詢的每一行數(shù)據(jù)返回用  Map  集合來存儲    、落實常規(guī)檢查。93. 3Override 94.  Map  viewPerson(String selectionArgs    95. OK比賽,小選手們大展歌喉,許多小歌星脫穎而出。宣傳欄是學(xué)生展現(xiàn)才能的舞臺,學(xué)校經(jīng)常更新,學(xué)生們不斷創(chuàng)新、勇躍投稿,作品質(zhì)量提高不少。在綠色學(xué)校檢查的鞭策下,學(xué)生環(huán)保

40、意識加強,爭當(dāng)“環(huán)保小衛(wèi)士”的行為屢建不鮮。本學(xué)期在各級領(lǐng)導(dǎo)的關(guān)心及學(xué)校的重視下,我校順利通過“石獅市綠色學(xué)?!钡臋z查。 HashMap (;   96.         SQLiteDatabase database = null;  97.         try   98.     

41、        String sql = "select * from person where id = ? "  99. 本學(xué)期我校肖醉蘭師參加泉州市心理健康教育錄像課比賽一等獎。蔡雙勉師獲得石獅市“小學(xué)數(shù)學(xué)統(tǒng)計與概率教學(xué)問題、歸因及對策研究”優(yōu)秀總結(jié)評選二等獎。參加中心校班主任工作技能競賽,肖醉蘭師獲得總分二等獎;肖醉蘭師撰寫案例分析單項比賽二等獎;肖醉蘭教育故

42、事演講單項比賽一等獎,李檔楊師撰寫學(xué)生操行評語單項比賽一等獎。參加中心校青年教師鋼筆字比賽一等獎人,二等獎查詢讀取數(shù)據(jù),查詢結(jié)果使用名。參加中心校青年教師數(shù)學(xué)賽課一等獎。來存儲、100.            /聲明一個游標(biāo),這個是行查詢的操作,支持原生SQL  、開展讀書沙龍  本學(xué)期學(xué)校向全體老師推薦相關(guān)教育教學(xué)書籍,經(jīng)過一段時間的活動后,組織全體教師開展幾次讀書沙龍,教師們或談讀書體會,或談讀書小故事,或推薦教育閱讀書目。這次活動

43、激發(fā)了教師的讀書欲望,增強廣大教師的研究意識和研究能力,提高  解決教育教學(xué)實踐中各種現(xiàn)實問題的信心和能力,幫助教師不斷創(chuàng)新工作業(yè)績,確保教育質(zhì)量的全面提高。102.             int colums = cursor.getColumnCount(;/  103.            

44、; /cursor.moveToNext( 之后,我校舉行了“與陽光姐姐零距離接觸”日記征文比賽。各班勇躍投稿,學(xué)校從優(yōu)秀作品中            while105. 活動,(int i = 0; i < colums; i+   促進教師鉆研課題意識,提高科研能力,提高作文教學(xué)質(zhì)量。106.     

45、60;               String cols_name = cursor.getColumnName(i; /提取列的名稱  三、學(xué)校、家庭、社會三位一體,辦人民滿意教育 107.本學(xué)期期中考后召開16年級學(xué)生家長會。每班確定會議主題,預(yù)設(shè)要解決的問題,與家長們進行充分的交流和溝通,充分了解社會、家長對學(xué)校的要求和建議,也讓社會了解我校的辦學(xué)方向和理念,知道如何去教育子女;

46、如何配合、支持學(xué)校的工作。定期召開家長會,教師積極家訪,加強家校合作,共同謀求教育學(xué)生的最佳途徑。學(xué)校、家庭、社會通力合作辦人民滿意的教育。 108.                      /數(shù)據(jù)庫中有寫記錄是允許有空值的,所以這邊需要做一個處理  109.        &

47、#160;            if(cols_value = null   110.                         cols_value = &qu

48、ot;"  111.                       112.                     map.put(cols_name

49、, cols_value;  113.                   114.               115.          catch

50、0;(Exception e   116.             e.printStackTrace(;  117.          finally   118.            

51、 if(database != null  119.                 database.close(;  120.               121.      

52、     122.         return map;  123.       124.   125.     /多條記錄 用 List >  來封裝,每一行產(chǎn)生一個 Map集合來裝載這一行的數(shù)據(jù)  126.    &#

53、160;/這樣就有多個Map值,然后放入List中.  127.     Override  128.     public List > listPersonMaps(String selectionArgs    129.         List > list =  new Arr

54、ayList >(;   130.         SQLiteDatabase database = null;  131.         try   132.             String 

55、sql = "select * from person " /這個是查詢表中所有的內(nèi)容,所以就不需要傳入的這個參數(shù)值了  133.             database = helper.getReadableDatabase(;  134.        

56、;     Cursor cursor = database.rawQuery(sql, selectionArgs;  135.             int colums = cursor.getColumnCount(;  136.       

57、60;     while(cursor.moveToNext(   137.                 Map  map =  new HashMap (;   138.           

58、      for(int i = 0; i < colums; i+   139.                     String cols_name = cursor.getColumnName

59、(i;  140.                     String cols_value = cursor.getString(cursor.getColumnIndex(cols_name;  141.           

60、;          if(cols_name = null   142.                         cols_value = "" &#

61、160;  143.                       144.                     map.put(cols_name,

62、0;cols_value;  145.                   146.                 list.add(map;  147.      &

63、#160;        148.          catch (Exception e   149.             / TODO: handle exception  150.  

64、60;       finally   151.             if(database != null  152.                 database.cl

65、ose(;  153.               154.           155.         return list;  156.        

66、 157.   5. 主程序文件 MainActivity.java 文件java view plaincopy1. package2.   3. import4. import5.   6. import7. import8. import9.   10. import11. import12. import13. import14. import15. import16. import17.   18. public class MainActivit

67、y extends Activity   19.   20.     private Button button1;  21.     private Button button2;  22.     private Button button3;  23.   

68、60; private Button button4;  24.     private Button button5;  25.     private Button button6;  26.       27.     private static final&#

69、160;String TAG = "MainActivity"  28.     Override  29.     protected void onCreate(Bundle savedInstanceState   30.         super.onCreate(savedIn

70、stanceState;  31. 32.         initComponent(;  33.         button1.setOnClickListener(new OnClickListener(   34.            &

71、#160;  35.             Override  36.             public void onClick(View v   37.         

72、        / TODO Auto-generated method stub  38.                 DBOpenHelper helper = new DBOpenHelper(MainActivity.this; 

73、0;39.                 /調(diào)用 getWritableDatabase(或者 getReadableDatabase(其中一個方法將數(shù)據(jù)庫建立  40.                 helper.getWritabl

74、eDatabase(;  41.               42.           43.         button2.setOnClickListener(new OnClickListener(   44.

75、               45.             Override  46.             public void onClick(View v&#

76、160;  47.                 / TODO Auto-generated method stub  48.                 PersonService 

77、service = new PersonDao(MainActivity.this;  49.                 /Object params = "張三","北京","男"  50.       

78、0;         Object params = "李四","上海","男" /新增加一條記錄  51.                 boolean flag = service.addPer

79、sion(params;  52.                 Log.i(TAG, "->" + flag;  53.               54.    

80、60;      55.         button3.setOnClickListener(new OnClickListener(              56.            

81、60;Override  57.             public void onClick(View v   58.                 PersonService service = new

82、 PersonDao(MainActivity.this;  59.                 Object params = 1;  60.                 /將ID為1的記錄

83、刪除  61.                 boolean flag = service.deletePerson(params;  62.                 Log.i(TAG, 

84、"->" + flag;  63.               64.           65.         button4.setOnClickListener(new OnClickListen

85、er(   66.               67.             Override  68.             public void

86、60;onClick(View v   69.                 / TODO Auto-generated method stub  70.                &

87、#160;/將ID為3的這一條記錄修改  71.                 PersonService service = new PersonDao(MainActivity.this;  72.              

88、;   Object params = "AHuier", "廈門", "男", "3"  73.                 boolean flag = service.updatePerson(params;&

89、#160; 74.                 Log.i(TAG, "->" + flag;  75.               76.      

90、0;    77.         button5.setOnClickListener(new OnClickListener(   78.               79.           

91、  Override  80.             public void onClick(View v   81.                 /查詢ID為3的單條記錄  82.       &#

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論