AndroidStudio项目开发教程-从基础入门到乐享开发 课件 第六章 数据库编程_第1页
AndroidStudio项目开发教程-从基础入门到乐享开发 课件 第六章 数据库编程_第2页
AndroidStudio项目开发教程-从基础入门到乐享开发 课件 第六章 数据库编程_第3页
AndroidStudio项目开发教程-从基础入门到乐享开发 课件 第六章 数据库编程_第4页
AndroidStudio项目开发教程-从基础入门到乐享开发 课件 第六章 数据库编程_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第六章数据库编程安卓·入门与开发目录6.1 SQLite数据库简介6.2 创建数据库6.3 SQLite数据库的操作6.4 数据信息显示控件6.5 购物商城的数据库编程6.1

SQLite数据库简介Android系统集成了一个轻量级的关系数据库——SQLite。它不像Oracle、MySQL和SQLServer等那样专业,但是因为它占用资源少,运行效率高、安全可靠、可移植性强,并且提供零配置运行模式,所以适用于在资源有限的设备(如手机和平板电脑等)上进行数据存取。在开发手机应用时,一般会通过代码来动态创建数据库,即在程序运行时,首先尝试打开数据库。如果数据库不存在,则自动创建数据库,然后再打开该数据库。下面介绍如何通过代码来创建以及操作数据库。6.1SQLite数据简介6.1 SQLite数据库简介6.2 创建数据库6.3 SQLite数据库的操作6.4 数据信息显示控件6.5 购物商城的数据库编程目录6.2

创建数据库static

SQLiteDatabase

openOrCreateDatabase(String

path,SQLiteDatabase.CursorFactoryfactory)SQLiteDatabasedb=SQLiteDatabase.

OpenOrCreateDatabase(“user.db”,null);6.2创建数据库Android提供了两种创建SQLite数据库的方法,下面分别进行介绍。1.使用openOrCreateDatabase方法创建数据库SQLiteDatabase类是Android中专门用来描述SQLite数据库的类。SQLiteDatabase表示一个数据库,应用程序只要获得了代表数据库的SQLiteDatabase对象,就可以通过SQLiteDatabase对象来创建数据库。对SQLiteDatabase对象调用openOrCreateDatabase方法可以打开或创建一个数据库,语法如下:说明:游标提供了一种从表中检索数据并进行操作的灵活手段,通过游标可以一次处理查询结果集中的一行,并可以对该行数据执行特定操作。例如,使用openOrCreateDatabase方法创建一个名称为user.db的数据库的代码如下:Øpath:用于指定数据库文件;

Øfactory:用于实例化一个游标。6.2

创建数据库6.2创建数据库2.通过SQLiteOpenHelper类创建数据库在Android中,提供了一个数据库辅助类SQLiteOpenHelper。在该类的构造器中,调用Context中的方法创建并打开一个指定名称的数据库。在应用这个类时,需要编写继承SQLitcOpenHelper类的子类,并且重写onCreate()和onUpgrade方法。6.1 SQLite数据库简介6.2 创建数据库6.3 SQLite数据库的操作6.4 数据信息显示控件6.5 购物商城的数据库编程目录6.3SQLite数据库的操作最常用的数据操作是指添加、删除、更新和查询。对于这些操作程序开发人员完全可以通过执行SOL语句来完成。但是这里推荐使Android提供的专用类和方法来实现。SQLiteDatabase类提供了insert()、update()、delete()和query)方法,这些方法封装了执行添加、更新、删除和查询操作的SQL命令,所以可以使用这些方法来完成对应的操作,而不用编写SQL语句了。(1)添加操作SQLiteDatabase类提供了insert方法用于向表中插入数据。Insert方法的基本语法格式如下:publiclonginsert(Stringtable,StringnullColumnHack,ContentValuesvalues)INSERTINTOTABLE_NAME[(column1,column2,column3,...columnN)]VALUES(value1,value2,value3,...valueN);Øtable:用于指定表名:ØnullColumnHack:可选参数,用于当values参数为空时,指定哪个字段设置为null,如果values不为空,则该参数值可以设置为null;values:用于指定具体的字段值。它相当于Map集合,也是通过键值对的形式存储值的。6.3SQLite数据库的操作6.3SQLite数据库的操作(2)更新操作SQLiteDatabase类提供了update方法用于更新表中的数据。Update方法的基本语法格式如下:publicintupdate(Stringtable,ContentValuesvalues,StringwhereClause,String[]whereArgs)UPDATEtable_nameSETcolumn1=value1,column2=value2....columnN=valueN[WHERECONDITION];Ø

table:用于指定表名;Ø

values:用于指定要更新的字段及对应的字段值。它相当于Map集合,也是通过键值对的形式存储值的;Ø

whereClause:用于指定条件语句,可以使用占位符(?);Ø

whereArgs:当条件表达式中包含占位符(?)时,该参数用于指定各占位参数的值。如果不包括占位符,该参数值可以设置为null。6.3SQLite数据库的操作6.3SQLite数据库的操作(3)删除操作SQLiteDatabase类提供了delete方法用于从表中删除数据。Delete方法的基本语法格式如下:publicintdelete(Stringtable,StringwhereClause,String[]whereArgs)DELETEFROMtable_nameWHERE[conditions....................];Øtable:用于指定表名;ØwhereClause:用于指定条件语句,可以使用占位符(?);ØwhercArgs:当条件表达式中包含占位符(?)时,该参数用于指定各占位参数的值。如果不包含占位符,该参数值可以设置为null。6.3SQLite数据库的操作6.3SQLite数据库的操作(4)查询操作SQLiteDatabase类提供了query方法用于查询表中的数据。Query方法的基本语法格式如下:publicCursorquery(booleandistinct,Stringtable,String[]columns,Stringselection,String[]selectionArgs,StringgroupBy,Stringhaving,StringorderBy,Stringlimit)Øtable:用于指定表名;Øcolumns:用于指定要查询的列。若为空,则返回所有列;Øselection:用于指定where子句,即指定查询条件,可以使用占位符(?);ØselectionArgs:where子句对应的条件值,当条件表达式中包含占位符(?)时,该参数用于指定各占位参数的值。如果不包含占位符,该参数值可以设置为null;ØgroupBy:用于指定分组方式;Øhaving:用于指定having条件;ØorderBy:用于指定排序方式,为空表示采用默认排序方式;Ølimit:用于限制返回的记录条数,为空表示不限制。Øquery方法的返回值为Cursor对象。该对象中保存着查询结果,但是这个结果并不是数据集合的完整复制,而是数据集的指针。通过它提供的多种移动方式,可以获取数据集合中的数据。Cursor类提供的常用方法如表6.1所示。6.3SQLite数据库的操作表6.1Cursor类提供的常用方法方法说明moveToFirst()将指针移动到第一条记录上moveToNext()将指针移动到下一条记录上moveToPrevious()将指针移动到上一条记录上getCount()获取集合的记录数量getColumnIndexOrThrow()返回指定字段名称的序号,如果字段不存在,则产生异常getColumnName()返回指定序号的字段名称6.3 SQLite数据库的操作6.3SQLite数据库的操作6.1 SQLite数据库简介6.2 创建数据库6.3 SQLite数据库的操作6.4 数据信息显示控件6.5 购物商城的数据库编程目录

一、ListView介绍 ListView有两个重要职责:

1、

将数据填充到布局

2、

处理用户的选择点击等操作。 ListView需要三个元素:

1、ListVeiw布局:用来展示列表的View

2、

适配器:

用来把数据映射到ListView上的中介

3、

数据源:

具体的将被映射的字符串,图片,或者基本组件适配器是一个连接数据和AdapterView的桥梁,通过它能有效地实现数据与AdapterView的分离设置,使AdapterView与数据的绑定更加简便,修改更加容易。将数据源的数据适配到ListView中的常用适配器有:ArrayAdapter、SimpleAdapter和SimpleCursorAdapter。·ArrayAdapter最为简单,只能展示一行字;·SimpleAdapter有最好的扩充性,可以自定义各种各样的布局,除了文本外,还可以放ImageView(图片)、Button(按钮)、CheckBox(复选框)等等;·SimpleCursorAdapter可以认为是SimpleAdapter对数据库的简单结合,可以方便地把数据库的内容以列表的形式展示出来6.4

数据信息显示控件6.4数据信息显示控件Android常用列表信息显示控件有ListView、RecyclerView。6.4

数据信息显示控件6.4数据信息显示控件

二、RecyclerView介绍 RecyclerView集成自ViewGroup。RecyclerView是Android-support-V7版本中新增的一个组件,官方对于它的介绍是:RecyclerView是ListView的升级版本,更加先进和灵活。ListView只能实现垂直滚动列表,但RecyclerView还可以实现水平、多列、跨列等复杂的滚动列表。在使用RecyclerView时候,必须指定一个适配器Adapter和一个布局管理器LayoutManager。适配器继承RecyclerView.Adapter类,具体实现类似ListView的适配器,取决于数据信息以及展示的UI。布局管理器用于确定RecyclerView中Item的展示方式以及决定何时复用已经不可见的Item,避免重复创建以及执行高成本的findViewById方法。Android常用列表信息显示控件有ListView、RecyclerView。6.1 SQLite数据库简介6.2 创建数据库6.3 SQLite数据库的操作6.4 数据信息显示控件6.5 购物商城的数据库编程目录6.5

购物商城的数据库编程使用Activity类中的getPreferences方法获取如果Activity仅需要一个SharedPreferences文件,则可以使用getPreferences方法获取。因为只有一个文件,所以不需要提供名称。该方法的语法格式如下:getPreferences(intmode)其中,参数mode的取值同getSharedPreferences方法相同。Ø

在包节点上单击鼠标右键,在弹出快捷菜单上,选择新建entity包,用于存放购物商城用到的各种自定义类。Ø

在包节点上单击鼠标右键,在弹出快捷菜单上,选择新建db包用于存放数据库操作类。Ø

在包节点上单击鼠标右键,在弹出快捷菜单上,选择新建utils包用于存放常用工具类。Ø

新建的步骤如图6.1所示。相应目录完成后,整体目录结构如图6.2所示图6.2项目目录结构图图6.1新建包结构图6.5购物商城的数据库编程使用Activity类中的getPreferences方法获取如果Activity仅需要一个SharedPreferences文件,则可以使用getPreferences方法获取。因为只有一个文件,所以不需要提供名称。该方法的语法格式如下:getPreferences(intmode)其中,参数mode的取值同getSharedPreferences方法相同。在6.2中学习了通过SQLiteOpenHelper类创建数据库。在db包节点上单击鼠标右键,在弹出快捷菜单上,选择新建DBHelper类继承SQLiteOpenHelper并重写onCreate方法、onUpgrade()创建和更新数据库。具体代码参考教材P150-1516.5.1

商城的数据库设计6.5购物商城的数据库编程使用Activity类中的getPreferences方法获取如果Activity仅需要一个SharedPreferences文件,则可以使用getPreferences方法获取。因为只有一个文件,所以不需要提供名称。该方法的语法格式如下:getPreferences(intmode)其中,参数mode的取值同getSharedPreferences方法相同。6.5.1

商城的数据库设计在db包节点上单击鼠标右键,在弹出快捷菜单上,选择新建DaoUtils数据操作帮助类,主要有插入数据、更新指定表中的数据、删除表中符合条件的数据、查询数据(需手动关闭数据库连接)、全查询(需手动关闭数据库连接)、关闭数据库连接等常用方法。具体代码参考教材P152-1566.5购物商城的数据库编程使用Activity类中的getPreferences方法获取如果Activity仅需要一个SharedPreferences文件,则可以使用getPreferences方法获取。因为只有一个文件,所以不需要提供名称。该方法的语法格式如下:getPreferences(intmode)其中,参数mode的取值同getSharedPreferences方法相同。(2)在entity包节点上单击鼠标右键,在弹出快捷菜单上,选择新建User类,用于映射user表内用户信息。(1)、通过之前开发的注册功能可以知道,用户表需要用户名、密码、手机号码、邮箱、性别等字段。在DBHelper类的onCreate方法里创建t_user表,用于存储用户信息。6.5.1.1

用户表//user表StringuserTable="createtablet_user(namevarchar(25)primarykey,"+"passwordtext,nicktext,gendertext,phonetext,"+"emailtext,authortext);";Log.i("创建user表",userTable);db.execSQL(userTable);publicclassUser{privateStringname;//账号privateStringpassword;//密码privateStringnick;//姓名privateStringgender;//性别privateStringphone;//手机privateStringemail;//邮箱privateStringauthor;//作者//以下省略get、set方法…}6.5购物商城的数据库编程使用Activity类中的getPreferences方法获取如果Activity仅需要一个SharedPreferences文件,则可以使用getPreferences方法获取。因为只有一个文件,所以不需要提供名称。该方法的语法格式如下:getPreferences(intmode)其中,参数mode的取值同getSharedPreferences方法相同。(1)、购物车数据表主要有主键商品ID、商品标题、商品价格、商品品牌、图片的保存路径、商品数量、图片、店铺等字段。在DBHelper类的onCreate方法里创建t_cart表,用于存储购物车信息。6.5.1.2购物车表//购物车数据数据表,主键商品ID、商品标题、商品价格、商品品牌、图片的保存路径、商品数量、图片、店铺StringcartTable="createtablet_cart(_idvarchar(10)primarykey,"+"titletext,pricereal,brandvarchar(20),image_urltext,"+"countinteger,imagetext,merchantvarchar(20));";Log.i("创建cart表",cartTable);db.execSQL(cartTable);(2)在entity包节点上单击鼠标右键,在弹出快捷菜单上,选择新建GoodsCart类,用于映射t_cart表购物车信息。packagecom.mingrisoft.mrshop.entity;/***功能:购物车中数据*/publicclassGoodsCart{privateString_id;//商品ID编号privateStringtitle;//标题privatedoubleprice;//价钱privateStringbrand;//品牌privateStringimage_url;//图片的路径privateintcount;//数量privateStringimage;//图片privateStringmerchant;//商家privateCartViewStateviewState;//控件状态//以下省略get、set方法…@OverridepublicStringtoString(){return"商品ID:【"+_id+"】商品数量:【"+count+"】";}}6.5购物商城的数据库编程使用Activity类中的getPreferences方法获取如果Activity仅需要一个SharedPreferences文件,则可以使用getPreferences方法获取。因为只有一个文件,所以不需要提供名称。该方法的语法格式如下:getPreferences(intmode)其中,参数mode的取值同getSharedPreferences方法相同。在entity包节点上单击鼠标右键,在弹出快捷菜单上,选择新建CartViewState类,用于记录购物车中控件的状态6.5.1.2购物车表packagecom.mingrisoft.mrshop.entity;/***功能:购物车中控件的状态*/publicclassCartViewState{privatebooleanaddViewState;//添加数量控件的状态privatebooleancutViewState;//减少数量控件的状态privatebooleancheckViewState;//选择控件的状态publicCartViewState(){}publicCartViewState(booleanaddViewState,booleancutViewState,booleancheckViewState){this.addViewState=addViewState;this.cutViewState=cutViewState;this.checkViewState=checkViewState;}//以下省略get、set方法…@OverridepublicStringtoString(){return"checkViewState(控件选中状态):"+checkViewState;}}6.5购物商城的数据库编程使用Activity类中的getPreferences方法获取如果Activity仅需要一个SharedPreferences文件,则可以使用getPreferences方法获取。因为只有一个文件,所以不需要提供名称。该方法的语法格式如下:getPreferences(intmode)其中,参数mode的取值同getSharedPreferences方法相同。(1)购物车数据表主要有主键商品ID、商品名称、商品摘要、价钱、商品照片、推荐分类、商品类型、商品类型名称、商家等字段。在DBHelper类的onCreate方法里创建t_commodity表,用于存储商品信息。6.5.1.3商品表//commodity商品表StringcommodityTable="createtablet_commodity(idvarchar(25)primarykey,"+"titletext,descriptiontext,pricereal,imageUrlstext,"+"classificationtext,typeinteger,typeNametext,merchanttext);";Log.i("创建commodity表",commodityTable);db.execSQL(commodityTable);(2)entityentity包新建commodity对象。参考教材106页6.5购物商城的数据库编程使用Activity类中的getPreferences方法获取如果Activity仅需要一个SharedPreferences文件,则可以使用getPreferences方法获取。因为只有一个文件,所以不需要提供名称。该方法的语法格式如下:getPreferences(intmode)其中,参数mode的取值同getSharedPreferences方法相同。(1)购物车数据表主要有主键商品ID、商品名称、商品摘要、价钱、原价、商品照片、提示、商品说明、商品品牌、评论、商品类型名称、商家等字段。在DBHelper类的onCreate方法里创建t_goodDetails表,用于存储商品详情信息.6.5.1.4商品详情表(2)在entity包节点上单击鼠标右键,在弹出快捷菜单上,选择新建GoodDetails类用于映射商品详情。参考教材161页-162页6.5购物商城的数据库编程使用Activity类中的getPreferences方法获取如果Activity仅需要一个SharedPreferences文件,则可以使用getPreferences方法获取。因为只有一个文件,所以不需要提供名称。该方法的语法格式如下:getPreferences(intmode)其中,参数mode的取值同getSharedPreferences方法相同。1、在fragment节点上单击鼠标右键,在弹出快捷菜单上,选择新建CategoryFragment碎片,继承带有标题栏的公用TitleFragment类,并实现AdapterView.OnItemClickListener,OnItemClickListener监听。6.5.2商品分类模块2、声明定义相关全局变量。privateListViewtypeList;//类型列表privateRecyclerViewshopList;//商品列表privateList<String>typeNames;//类型名称集合privateTypeAdapternameAdapter;//类型适配器privateCommodityAdaptercommodityAdapter;//商品列表适配器privateList<Commodity>commodityList;//商品列表数据privateList<ShapeType>selectList;//选择类型集合Result<List<String>>result=newResult<List<String>>();;Result<List<Commodity>>resultData=newResult<List<Commodity>>();;privateDaoUtilsdaoUtils;//数据库操作类6.5购物商城的数据库编程使用Activity类中的getPreferences方法获取如果Activity仅需要一个SharedPreferences文件,则可以使用getPreferences方法获取。因为只有一个文件,所以不需要提供名称。该方法的语法格式如下:getPreferences(intmode)其中,参数mode的取值同getSharedPreferences方法相同。3、新建帧布局命名为fragment_category,采用线性布局,左边为ListView组件显示商品类型,右边用RecyclerView加载显示对应类型的商品列表,具体如图6.3所示。具体代码参考教材163页。6.5.2商品分类模块图6.3分类模块布局图4、在adapter包节点上单击鼠标右键,在弹出快捷菜单上,选择新建CommodityAdapter类,继承MyRecyclerViewAdapter适配器基类。设置适配器布局,绑定数据,更新页面数据。具体代码参考教材164页-165页6.5购物商城的数据库编程使用Activi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论