版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
SQLiteSQLite特點1.Android平臺中嵌入了一個關(guān)系型數(shù)據(jù)庫SQLite,和其他數(shù)據(jù)庫不同的是SQLite存儲數(shù)據(jù)時不區(qū)分類型例如一個字段聲明為Integer類型,我們也可以將一個字符串存入,一個字段聲明為布爾型,我們也可以存入浮點數(shù).Integer642.創(chuàng)建數(shù)據(jù)庫的表時可以不指定數(shù)據(jù)類型,例如:CREATETABLEperson(idINTEGERPRIMARYKEY,name)3.SQLite支持大部分標(biāo)準(zhǔn)SQL語句,增刪改查語句都是通用的,分頁查詢語句和MySQL相同SELECT*FROMpersonLIMIT20OFFSET10SELECT*FROMpersonLIMIT20,10創(chuàng)建數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫1.SQLiteOpenHelper2.聲明構(gòu)造函數(shù),4個參數(shù)onCreate()方法upGrade()方法javajava代碼: importAndroid.content.Context; importandroid.database.sqlite.SQLiteDatabase; importandroid.database.sqlite.SQLiteOpenHelper; importandroid.database.sqlite.SQLiteDatabase.CursorFactory; publicclassDBOpenHelperextendsSQLiteOpenHelper{ /** *OpenHelper *@paramcontext上下文 *@paramname數(shù)據(jù)庫名 *@paramfactory游標(biāo)工廠 *@paramversion數(shù)據(jù)庫版本,不要設(shè)置為0,如果為0則會每次都創(chuàng)建數(shù)據(jù)庫 */ public DBOpenHelper(Context context, String name,CursorFactoryfactory,intversion){ super(context,name,factory,version); } /** *當(dāng)數(shù)據(jù)庫第一次創(chuàng)建的時候被調(diào)用 */ publicvoidonCreate(SQLiteDatabasedb){ db.execSQL("CREATETABLEperson(id INTEGER PRIMARY KEYAUTOINCREMENT,name)"); } /** *當(dāng)數(shù)據(jù)庫版本發(fā)生改變的時候被調(diào)用 */ publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){ db.execSQL("ALTERTABLEpersonADDbalance"); } } publicvoidtestCreateDB(){ DBOpenHelper helper = new DBOpenHelper(getContext(),"itcast.db",null,2); helper.getWritableDatabase()//創(chuàng)建數(shù)據(jù)庫 }CRUDCRUD操作JDBCSQLite取連接,直接可以使用SQLiteDatabaseSQLSQLiteDatabase.execSQL()SQLiteDatabase.rawQuery()getReadableDatabase()getWritableDatabase()的區(qū)別查看源代碼后我們發(fā)現(xiàn)getReadableDatabase()在通常情況下返回的就是getWritableDatabase()拿到的數(shù)據(jù)庫只有在拋出異常的時候才會以只讀方式打開數(shù)據(jù)庫對象緩存下次打開時判斷是否重用SQLiteDatabaseinser(delet(updat(quer()法也可以對數(shù)據(jù)庫進(jìn)行操作這些方法封裝了部分SQL語句,通過參數(shù)進(jìn)行拼接crudsqlSQLiteDatabase類調(diào)用響應(yīng)的方法執(zhí)行操作insertdeleteupdateCREATETABLESQL語句;rawQuery()select語句.javajava代碼: importjava.util.ArrayList; importjava.util.List; importAndroid.content.Context; importAndroid.database.Cursor; importAndroid.database.sqlite.SQLiteDatabase; importcn.itcast.sqlite.DBOpenHelper; importcn.itcast.sqlite.domain.Person; publicclassSQLPersonService{ privateDBOpenHelperhelper; publicSQLPersonService(Contextcontext){ helpernewDBOpenHelper(context"itcast.db"null2);//初始化數(shù)據(jù)庫 } /** *Person *@parampPerson */ publicvoidinsert(Personp){ SQLiteDatabasedb=helper.getWritableDatabase();//獲取到數(shù)據(jù)庫 db.execSQL("INSERT INTO person(name,phone,balance)VALUES(?,?)",newObject[]{p.getName(),p.getPhone()}); db.close(); } /** *ID刪除 *@paramidPERSONID */ publicvoiddelete(Integerid){ SQLiteDatabase db = helper.getWritableDatabase(); 34.db.execSQL("DELETEFROMpersonWHEREid=?",newObject[]{id});db.close(); } /** *Person *@parampPerson */ publicvoidupdate(Personp){ SQLiteDatabasedb=helper.getWritableDatabase(); db.execSQL("UPDATE person SET name=?,phone=?,balance=?WHEREid=?",newObject[]{ p.getName(),p.getPhone(),p.getBalance(),p.getId()}); db.close(); } /** *ID查找 *@paramidID *@return,null */ publicPersonfind(Integerid){ SQLiteDatabasedb=helper.getReadableDatabase(); Cursorcursor=db.rawQuery("SELECTname,phone,balanceFROMpersonWHEREid=?",newString[]{id.toString()}); Personp=null; if(cursor.moveToNext()){ Stringname=cursor.getString(cursor.getColumnIndex("name")); Stringphone=cursor.getString(1); Integerbalance=cursor.getInt(2); p=newPerson(id,name,phone,balance); } cursor.close(); db.close(); returnp; } /** *Person對象 *@returnPerson,如未找到,size()為0List */ publicList<Person>findAll(){ SQLiteDatabasedb=helper.getReadableDatabase(); Cursor cursor = db.rawQuery("SELECT id,name,phone,balanceFROMperson",null); List<Person>persons=newArrayList<Person>(); while(cursor.moveToNext()){ Integerid=cursor.getInt(0);Stringname=cursor.getString(1); Stringphone=cursor.getString(2); Integerbalance=cursor.getInt(3); persons.add(newPerson(id,name,phone,balance)); } cursor.close(); db.close(); returnpersons; } /** *查詢某一頁數(shù)據(jù) *@parampage頁碼 *@paramsize每頁記錄數(shù) *@return */ publicList<Person>findPage(intpage,intsize){ SQLiteDatabasedb=helper.getReadableDatabase(); Cursor cursor = db.rawQuery("SELECT id,name,phone,balanceFROMpersonLIMIT?,?"http://,newString[]{String.valueOf((1)*size),String.valueOf(size)}); List<Person>persons=newArrayList<Person>(); while(cursor.moveToNext()){ Integerid=cursor.getInt(0); Stringname=cursor.getString(1); Stringphone=cursor.getString(2);Integerbalance=cursor.getInt(3);persons.add(newPerson(id,name,phone,balance));}cursor.close();db.close();returnpersons;}/***獲取記錄數(shù)*@return記錄數(shù)*/publicintgetCount(){SQLiteDatabasedb=helper.getReadableDatabase();Cursorcursor=db.rawQuery("SELECTCOUNT(*)FROMperson",null);cursor.moveToNext();returncursor.getInt(0);}} /** *Person *@parampPerson */ publicvoidinsert(Personp){ SQLiteDatabasedb=helper.getWritableDatabase();7. ContentValuesvalues=newContentValues(); values.put("name",p.getName()); values.put("phone",p.getPhone()); values.put("balance",p.getBalance()); //第一個參數(shù)是表名,第二個參數(shù)是如果要插入一條空記錄時指定的某一列的名字,第三個參數(shù)是數(shù)據(jù) db.insert("person",null,values); db.close(); } /** *ID刪除 *@paramidPERSONID */ publicvoiddelete(Integerid){ SQLiteDatabasedb=helper.getWritableDatabase(); db.delete("person","id=?",newString[]{id.toString()}); db.close(); } /** *Person *@parampPerson */ publicvoidupdate(Personp){ SQLiteDatabasedb=helper.getWritableDatabase(); ContentValuesvalues=newContentValues(); values.put("id",p.getId()); values.put("name",p.getName()); values.put("phone",p.getPhone()); values.put("balance",p.getBalance()); db.update("person", values, "id=?", new{p.getId().toString()}); db.close(); } /** *ID查找 *@paramidID *@return,null */
String[] publicPersonfind(Integerid){ SQLiteDatabasedb=helper.getReadableDatabase(); Cursorcursor=db.query("person",newString[]{"name","phone","balance"},"id=?",newString[]{id.toString()},null,null,null); Personp=null; if(cursor.moveToNext()){ Stringname=cursor.getString(cursor.getColumnIndex("name")); Stringphone=cursor.getString(1); Integerbalance=cursor.getInt(2); p=newPerson(id,name,phone,balance); } cursor.close(); db.close(); returnp; } /** *Person對象 *@returnPerson,如未找到,size()為0List */ publicList<Person>findAll(){ SQLiteDatabasedb=helper.getReadableDatabase(); Cursorcursor=db.query("person",newString[]{"id","name","phone","balance"},null,null,null,null,"iddesc"); List<Person>persons=newArrayList<Person>(); while(cursor.moveToNext()){ Integerid=cursor.getInt(0); Stringname=cursor.getString(1); Stringphone=cursor.getString(2); Integerbalance=cursor.getInt(3); persons.add(newPerson(id,name,phone,balance)); } cursor.close(); db.close(); returnpersons; } /** *查詢某一頁數(shù)據(jù) *@parampage頁碼 *@paramsize每頁記錄數(shù) *@return */ publicList<Person>findPage(intpage,intsize){ SQLiteDatabasedb=helper.getReadableDatabase(); Cursorcursor=db.query("person",newString[]{"id","name","phone","balance"},null,null,null,null,null,(1)*size+","+size); List<Person>persons=newArrayList<Person>(); while(cursor.moveToNext()){ Integerid=cursor.getInt(0); Stringname=cursor.getString(1); Stringphone=cursor.getString(2); Integerbalance=cursor.getInt(3); persons.add(newPerson(id,name,phone,balance)); } cursor.close(); db.close(); returnpersons; } /** *獲取記錄數(shù)*@return記錄數(shù)*/
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2030年辦公桌綜合試驗機公司技術(shù)改造及擴(kuò)產(chǎn)項目可行性研究報告
- 2024-2030年其他未列明公司技術(shù)改造及擴(kuò)產(chǎn)項目可行性研究報告
- 托育美食烘培課程設(shè)計
- 2024-2030年全球及中國玻璃纖維管道覆蓋層行業(yè)發(fā)展動態(tài)及投資規(guī)劃分析報告
- 2024-2030年全球及中國活性膠原蛋白保健品行業(yè)銷售規(guī)模及營銷策略研究報告
- 2024-2030年全球及中國標(biāo)準(zhǔn)海運干貨集裝箱行業(yè)現(xiàn)狀規(guī)模及發(fā)展前景預(yù)測報告
- 2024-2030年全球及中國投幣機行業(yè)盈利模式及需求前景預(yù)測報告
- 2024-2030年全球及中國家電用薄膜電容器行業(yè)盈利動態(tài)及投資效益預(yù)測報告
- 2024-2030年全球與中國蒸汽壓力測試儀市場銷售策略及競爭趨勢預(yù)測報告
- 2024-2030年全球SCADA行業(yè)發(fā)展動態(tài)及投資前景預(yù)測報告
- PS平面設(shè)計練習(xí)題庫(附參考答案)
- 混合云架構(gòu)整體設(shè)計及應(yīng)用場景介紹
- 《盤點程序說明會》課件
- 期末素養(yǎng)綜合測評卷(二)2024-2025學(xué)年魯教版(五四制)六年級數(shù)學(xué)上冊(解析版)
- 小王子-英文原版
- 考核19(西餐)試題
- 2024安全生產(chǎn)法解讀
- 吉林省長春市(2024年-2025年小學(xué)五年級語文)人教版期末考試(上學(xué)期)試卷及答案
- 環(huán)保創(chuàng)業(yè)孵化器服務(wù)行業(yè)營銷策略方案
- 研究生年終總結(jié)和展望
- 浙江省杭州市2023-2024學(xué)年高二上學(xué)期1月期末地理試題 含解析
評論
0/150
提交評論