版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SQLiteSQLite特点1.Android平台中嵌入了一个关系型数据库SQLite,和其他数据库不同的是SQLite存储数据时不区分类型例如一个字段声明为Integer类型,我们也可以将一个字符串存入,一个字段声明为布尔型,我们也可以存入浮点数.Integer642.创建数据库的表时可以不指定数据类型,例如:CREATETABLEperson(idINTEGERPRIMARYKEY,name)3.SQLite支持大部分标准SQL语句,增删改查语句都是通用的,分页查询语句和MySQL相同SELECT*FROMpersonLIMIT20OFFSET10SELECT*FROMpersonLIMIT20,10创建数据库创建数据库1.SQLiteOpenHelper2.声明构造函数,4个参数onCreate()方法upGrade()方法javajava代码: importAndroid.content.Context; importandroid.database.sqlite.SQLiteDatabase; importandroid.database.sqlite.SQLiteOpenHelper; importandroid.database.sqlite.SQLiteDatabase.CursorFactory; publicclassDBOpenHelperextendsSQLiteOpenHelper{ /** *OpenHelper *@paramcontext上下文 *@paramname数据库名 *@paramfactory游标工厂 *@paramversion数据库版本,不要设置为0,如果为0则会每次都创建数据库 */ public DBOpenHelper(Context context, String name,CursorFactoryfactory,intversion){ super(context,name,factory,version); } /** *当数据库第一次创建的时候被调用 */ publicvoidonCreate(SQLiteDatabasedb){ db.execSQL("CREATETABLEperson(id INTEGER PRIMARY KEYAUTOINCREMENT,name)"); } /** *当数据库版本发生改变的时候被调用 */ publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){ db.execSQL("ALTERTABLEpersonADDbalance"); } } publicvoidtestCreateDB(){ DBOpenHelper helper = new DBOpenHelper(getContext(),"itcast.db",null,2); helper.getWritableDatabase()//创建数据库 }CRUDCRUD操作JDBCSQLite取连接,直接可以使用SQLiteDatabaseSQLSQLiteDatabase.execSQL()SQLiteDatabase.rawQuery()getReadableDatabase()getWritableDatabase()的区别查看源代码后我们发现getReadableDatabase()在通常情况下返回的就是getWritableDatabase()拿到的数据库只有在抛出异常的时候才会以只读方式打开数据库对象缓存下次打开时判断是否重用SQLiteDatabaseinser(delet(updat(quer()法也可以对数据库进行操作这些方法封装了部分SQL语句,通过参数进行拼接crudsqlSQLiteDatabase类调用响应的方法执行操作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);//初始化数据库 } /** *Person *@parampPerson */ publicvoidinsert(Personp){ SQLiteDatabasedb=helper.getWritableDatabase();//获取到数据库 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; } /** *查询某一页数据 *@parampage页码 *@paramsize每页记录数 *@return */ publicList<Person>findPage(intpage,intsize){ SQLiteDatabasedb=helper.getReadableDatabase(); Cursor cursor = db.rawQuery("SELECT id,name,phone,balanceFROMpersonLIMIT?,?"//,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;}/***获取记录数*@return记录数*/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()); //第一个参数是表名,第二个参数是如果要插入一条空记录时指定的某一列的名字,第三个参数是数据 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; } /** *查询某一页数据 *@parampage页码 *@paramsize每页记录数 *@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; } /** *获取记录数*@return记录数*/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年博尔塔拉蒙古市财政系统事业单位人员招聘考试备考试题及答案详解
- 中学职业规划指导
- 2026江西吉安市井冈山大学附属医院进人计划9人(四)考试参考题库及答案解析
- 2026吉林省氢能产业综合研究院招聘1人考试模拟试题及答案解析
- 2026江苏南京大学YJ202605941电子科学与工程学院特任副研究员招聘1人考试模拟试题及答案解析
- 2026年巴音郭楞蒙古市政务服务中心(综合窗口)人员招聘考试备考试题及答案详解
- 2026年巴彦淖尔市医疗系统事业编乡村医生人员招聘考试备考试题及答案详解
- 2026新疆和田墨玉县人力资源和社会保障局招聘笔试模拟试题及答案解析
- 2026湖南益阳市南县高新投资集团有限公司招聘6人考试模拟试题及答案解析
- 2026 增肌期素鸡课件
- “科技创新2030”新材料重大专项2026年度申报指南解读
- 软件开发需求变更管理模板
- GB/T 5973-2026起重机械钢丝绳绳端固接接头
- 2025-2026学年统编版七年级语文上学期 课外文言文阅读(期末试题汇编)解析版
- 乡镇档案室上墙制度
- 产科安全警示教育课件
- 2025网格员招聘笔试必考题库(含答案)
- 法学网络诽谤行为的法律规制与责任认定毕业论文答辩
- 电子承兑贴现协议书
- DB61T 1986-2025《林木采伐技术规范》
- 食品安全快速检测技术应用
评论
0/150
提交评论