Android应用基础实验指导书_第1页
Android应用基础实验指导书_第2页
Android应用基础实验指导书_第3页
Android应用基础实验指导书_第4页
Android应用基础实验指导书_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

-.z.TOC\o"1-2"\h\u12186实验一:搭建Android平台和创建HelloWorld -2-8420实验目的-2-27898实验要求-2-21578实验容-2-31055实验二:UI设计480实验目的413386实验要求431702实验容432630实验三:Intent、Activity应用126075一、实验目的124014二、实验要求129983三、实验步骤1224380实验四*ML文件序列化172281实验5ContentProvider应用24281339.1实验目的24198009.2实验容2498469.3实验原理2432459.4实验步骤2515750实验6广播事件处理BroadcastReceiver26612511.1实验目的261524911.2实验容26282811.3实验原理261346011.4实验步骤2823172实验7SQLite和SQLiteDatabase应用314608.1实验目的31324158.2实验容31139068.3实验原理31128348.4实验步骤313492实验8网络访问与服务3910041【实验要求】3919289【实验过程】39实验一:搭建Android平台和创建HelloWorld实验目的本次实验的目的是让大家熟悉搭建智能手机开发平台的过程,了解Andorid开发项目的基本文件目录结构,并实现HelloWorld小例程。实验要求完成Android开发平台的搭建及相关配置创建项目并熟悉文件目录结构实现例程HelloWorld实验容安装JavaJDK下载所需版本的JDK,点击安装到C盘

JavaSEDevelopmentKit8u102YoumustaccepttheOracleBinaryCodeLicenseAgreementforJavaSEtodownloadthissoftware.

AcceptLicenseAgreement

DeclineLicenseAgreementProduct/FileDescriptionFileSizeDownloadWindows*86189.2MB

jdk-8u102-windows-i586.e*eWindows*64194.68MB

jdk-8u102-windows-*64.e*e二、安装Androidstudio从安卓中文社区(./)下载最新版本的安装包,安装软件开发平台。对软件进行个性化设置。建立新项目HelloWorld步骤。。。。运行调试程序步骤。。。。。-.z.实验二:UI设计实验目的本次实验的目的是让大家熟悉Android开发中的UI设计,包括了解和熟悉常用控件的使用、界面布局和事件处理等容。实验要求熟悉和掌握界面控件设计了解Android界面布局掌握控件的事件处理实验容一、常用控件1.常用控件介绍Android中有许多常用控件(简单分类):文本框:Te*tView、EditTe*t按钮:Button、RadioButton、RadioGroup、CheckBo*、ImageButton列表:List、E*pandableListView、Spinner、AutopleteTe*tView、GridView、ImageView进度条:ProgressBar、ProgressDialog、SeekBar、RatingBar选择器:DatePicker、TimePicker菜单:Menu、ContentMenu对话框:Dialog、ProgressDialog常用的控件有文本框、按钮和列表等。2.控件的实现在上一个实验中,我们用Te*tView实现了在界面显示一句“HelloTheAndroidWorld!”。publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState); Te*tViewte*tView=newTe*tView(this); te*tView.setTe*t("HelloTheAndroidWorld!"); setContentView(te*tView);}现在我们来看一看.*ml文件和编码的相互关系。在HelloWorld.java中敲入如下代码:packagetju.scs.android.test;importandroid.app.Activity;importandroid.os.Bundle;importandroid.widget.Button;importandroid.widget.Te*tView;publicclassHelloWorlde*tendsActivity{/**Calledwhentheactivityisfirstcreated.*/OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);Te*tViewte*tView=(Te*tView)findViewById(R.id.te*tView01);Buttonbutton=(Button)findViewById(R.id.button01); }}注意在上面并没有为te*tView和button设置文本容等,另外te*tView的初始化代码为:Te*tViewte*tView=(Te*tView)findViewById(R.id.te*tView01);此处初始化用到了id为te*tView01的Te*tView。在项目目录中找到/res/layout/main.*ml,如下:<"*mlversion="1.0"encoding="utf-8""><LinearLayout*mlns:android="schemas.android./apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><Te*tViewandroid:id="+id/te*tView01" android:layout_width="fill_parent"android:layout_height="wrap_content"android:te*t="string/hello"/><Buttonandroid:id="+id/button01" android:layout_width="fill_parent" android:layout_height="wrap_content"android:te*t="string/button" /></LinearLayout>注意上面列出了两个控件:Te*tView和Button,id分别为te*tView01和button01,它们的文本容分别为string/hello和string/button。在项目目录中找到/res/values/strings.*ml,如下:<"*mlversion="1.0"encoding="utf-8""><resources><stringname="hello">HelloTheAndroidWorld!</string><stringname="button">Iamabutton!</string><stringname="app_name">HelloWorld</string></resources>可以看到两个string:hello和button的容分别为“HelloTheAndroidWorld!”和“Iamabutton!”,即使文本框和按钮在界面上显示的容,如下图所示:3.控件的属性可以直接在类中为控件设置属性,也可以在*ml文件中设置属性。每个控件都有一系列的属性,例如id、size、te*t、color等等,大家可以找找API查看控件的属性。二、界面布局 Android中有很多布局:FrameLayout:最简单的一个布局对象。它里面只显示一个显示对象。Android屏幕元素中所有的显示对象都将会固定在屏幕的左上角,不能指定位置。但允许有多个显示对象,但后一个将会直接在前一个之上进行覆盖显示,把前一个部份或全部挡住(除非后一个是透明的)。LinearLayout:以单一方向对其中的显示对象进行排列显示,如以垂直排列显示,则布局管理器中将只有一列;如以水平排列显示,则布局管理器中将只有一行。同时,它还可以对个别的显示对象设置显示比例。TableLayout:以拥有任意行列的表格对显示对象进行布局,每个显示对象被分配到各自的单元格之中,但单元格的边框线不可见。AbsoluteLayout:允许以坐标的方式,指定显示对象的具体位置,左上角的坐标为(0,0),向下及向右,坐标值变大。这种布局管理器由于显示对象的位置定死了,所以在不同的设备上,有可能会出现最终的显示效果不一致。RelativeLayout:允许通过指定显示对象相对于其它显示对象或父级对象的相对位置来布局。如一个按钮可以放于另一个按钮的右边,或者可以放在布局管理器的中央。布局中可以放置控件,而每个布局又可以嵌套其他布局,这种思想和之前学习java的布局是一样的。例如在main.*ml中如下布局:在一个LinearLayout布局下嵌套了两个LinearLayout,出来的效果如下图所示:其他布局请大家自行尝试。三、事情处理事件监听和时间处理的概念大家以前都学习过,android中主要有如下事件方法:onClick(Viewv)一个普通的点击按钮事件booleanonKeyMultiple(intkeyCode,intrepeatCount,KeyEventevent)用于在多个事件连续时发生,用于按键重复booleanonKeyDown(intkeyCode,KeyEventevent)用于在按键进行按下时发生booleanonKeyUp(intkeyCode,KeyEventevent)用于在按键进行释放时发生onTouchEvent(MotionEventevent)触摸屏事件,当在触摸屏上有动作时发生booleanonKeyLongPress(intkeyCode,KeyEventevent)当长时间按时发生下面以点击一个Button为例子:packagetju.scs.android.test;importandroid.app.Activity;importandroid.os.Bundle;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;importandroid.widget.Te*tView;importandroid.widget.Toast;publicclassHelloWorlde*tendsActivity{/**Calledwhentheactivityisfirstcreated.*/OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);Buttonbutton=(Button)findViewById(R.id.button01);button.setOnClickListener(buttonListener); }privateOnClickListenerbuttonListener=newOnClickListener(){publicvoidonClick(Viewv){ Toast.makeTe*t(v.getConte*t(),"Youhaveclickedabutton!",Toast.LENGTH_LONG).show(); } };}为button添加了一个监听buttonListener,对应的onClick方法则抛出了一则文本框提示用户,效果图如下所示:其他事件处理请大家自行尝试。-.z.实验三:Intent、Activity应用一、实验目的本次实验的目的是让大家熟悉Intent和Activity的使用。Intent的最常用的用途是绑定应用程序组件。Intent用来在应用程序Activity间启动、停止和传输。并实现添加用户名,密码小例程。二、实验要求完成Android开发平台的搭建及相关配置创建项目并熟悉文件目录结构实现例程添加用户名,密码实验步骤三、实验步骤项目界面:添加用户名,密码,在另一页面显示用户名。1、创建项目新建一个Android工程命名为test1,目录结构如下图:2、添加布局文件修改main.*ml布局文件(这里增加了两个Te*tView,两个EditView,一个按钮),如下图新建test2.*ml布局文件(这里增加了两个Te*tView),这个页面是用来显示添加的用户名,如下图:3、创建Activity修改test1.java,并且新建一个Activity,一个是test2.java。,代码分别如下:Test1.java作用:获得页面输入的容,存储并跳转到test2.*ml。-.z.Test2.java作用:从Intent中获得需要显示name的值,并给Te*tView赋值。-.z.4.修改AndroidManifest.*ml文件比较重要的一步啦,修改AndroidManifest.*ml文件(将新增的Activity,test2)注册一下,代码如下(第16行):实验四*ML文件序列化【目的】理解原始*ML资源与其他使用*ML文件定义资源的区别。【要求】1)

创建原始*ML资源;2)

在程序中使用原始*ML资源。【原理】Android资源管理机制,*ML文件操作。【过程】1、

创建工程a)

Project

name:Chapter03_Resourceb)

Package

name:.e*ample.chapter03_resourcec)

Activity

name:Test*mlActivityd)

Application

name:Chapter03_Resourcee)

Min

SDK

Version:3

图1

创建工程图1.原始*ML资源文件的定义原始*ML资源文件的定义信息通过表3.6来描述。表3.6

原始*ML资源文件定义和使用资

置res/*ml/test.*m(文件名称任意)原始*ML文件格式使用<"*ml

version="1.0"

encoding="utf-8""><resources>根元素<someElement>子元素:<someElement

name=value/>子元素及属性名称任意获得*ML资源的方法getResources().get*ml()引用*ML资源的格式Java代码中:R.*ml.*ml_name2.

原始*ML文件的使用获得原始*ML文件的基本思路是,通过getResources().get*ml()获得*ML原始文件,得到*mlResourceParser对象,通过该对象来判断是文档的开始还是结尾、是*个标签的开始还是结尾,并通过一些获得属性的方法来遍历*ML文件,从而访问*ML文件的容。下面的实例演示了如何访问*ML文件容,并将容显示在一个Te*tView中。2.1在"Chapter03_Resource"工程中的res\*ml\目录下,创建一个test.*ml文件。该文件中定义了两条客户信息,属性信息有、年龄、性别和地址,容如下所示。1

<"*ml

version="1.0"

encoding="utf-8"">2

<resources>3

<customer

name="tom"

age="20"

gender="male"

email="tom."/>4

<customer

name="kite"

age="21"

gender="male"

email="kite."/>5

</resources>2.2在该工程的res\layout\目录下,创建一个test_*ml.*ml布局文件,该布局文件中添加一个Button和一个Te*tView视图组件。Button用于响应单击事件访问*ML容,Te*tView用于显示*ML容。6

<"*ml

version="1.0"

encoding="utf-8"">7

<LinearLayout

*mlns:android="schemas.android./apk/res/android"

8

android:orientation="vertical"

android:layout_width="fill_parent"

9

android:layout_height="fill_parent">10

11

<Button

12

android:te*t="获得*ML容"

13

android:id="+id/*mltTestButton01"

14

android:layout_width="wrap_content"

15

android:layout_height="wrap_content"></Button>16

17

<Te*tView

18

android:te*t=""

19

android:id="+id/*mlContentTe*tView01"

20

android:layout_width="wrap_content"

21

android:layout_height="wrap_content"

22

/>23

24

</LinearLayout>

图2

布局显示图3.源工程代码在该工程的包中创建一个Test*mlActivity类。在该类顶部声明使用到的Te*tView和Button,在onCreate()方法中实例化,添加Button的单击事件,获得*ML容显示在Te*tView中。package

.amaker.ch03.*ml;

import

java.io.IOE*ception;

import

org.*mlpull.v1.*mlPullParser;

import

org.*mlpull.v1.*mlPullParserE*ception;

import

android.app.Activity;

import

android.content.res.Resources;

import

android.content.res.*mlResourceParser;

import

android.os.Bundle;

import

android.view.View;

import

android.view.View.OnClickListener;

import

android.widget.Button;

import

android.widget.Te*tView;

import

.amaker.test.R;

public

class

Test*mlActivity

e*tends

Activity

{

private

Te*tView

myTe*tView;

private

Button

myButton;

Override

public

void

onCreate(Bundle

savedInstanceState)

{

super.onCreate(savedInstanceState);

//

设置当前Activity的容布局视图

setContentView(R.layout.test_*ml);

//

通过findViewById方法获得Te*tView实例

myTe*tView

=

(Te*tView)findViewById(R.id.*mlContentTe*tView01);

//

通过findViewById方法获得Button实例

myButton

=

(Button)findViewById(R.id.*mltTestButton01);

//

设置按钮的单击事件监听器

myButton.setOnClickListener(new

OnClickListener()

{

Override

public

void

onClick(View

v)

{

//

定义计数器

int

counter

=

0;

//

实例化StringBuilder

StringBuilder

sb

=

new

StringBuilder("");

//

获得Resources

实例

Resources

r

=

getResources();

//

通过Resources,获得*mlResourceParser实例

*mlResourceParser

*rp

=

r.get*ml(R.*ml.test);

try

{

//

如果没有到文件尾继续循环

while

(*rp.getEventType()

!=

*mlResourceParser.END_DOCUMENT)

{

//

如果是开始标签

if

(*rp.getEventType()

==

*mlResourceParser.START_TAG)

{

//

获得标签名称

String

name

=

*rp.getName();

//

判断标签名称是否等于customer

if(name.equals("customer")){

counter++;

获得标签属性追加到StringBuilder中

sb.append("第"+counter+"条客户信"+"\n");

sb.append(*rp.getAttributeValue(0)+"\n");

sb.append(*rp.getAttributeValue(1)+"\n");

sb.append(*rp.getAttributeValue(2)+"\n");

sb.append(*rp.getAttributeValue(3)+"\n\n");

}

}

else

if

(*rp.getEventType()

==

*mlPullParser.END_TAG)

{

}

else

if

(*rp.getEventType()

==

*mlPullParser.TE*T)

{

}

//

下一个标签

*rp.ne*t();

}

//

将StringBuilder设置为Te*tView的文本

myTe*tView.setTe*t(sb.toString());

}

catch

(*mlPullParserE*ception

e)

{

e.printStackTrace();

}

catch

(IOE*ception

e)

{

e.printStackTrace();

}

}

});

}

}

4.运行程序,结果如下图

图3

结果运行显示图

:实验6源码实验5ContentProvider应用5.1实验目的掌握Android操作系统ContentProvider的基本概念;掌握使用ContentProvider的实现方法。5.2实验容编写工程ContentProviderTest,并进行数据插入、查询、删除等操作5.3实验原理 一般计算机所使用的操作系统大都会提供共享文件机制,让应用程序彼此间可以存储和访问文件,数据可以相互共享。Android操作系统所采用的方法是不同的,在Android操作系统中,所有应用程序的数据和文件都是属于该应用程序所私有的。但是Android操作系统通过提供容提供器(ContentProviders)方法来公开数据,可以公开数据到数据容容器,其他应用程序经过授权可以读取。数据容提供器的数据类型可以是图像(Image)、音频(Audio)、视频(Video)和个人通讯薄(PersonalContentInformation)。ContentProviders为存储和获取数据提供了统一的接口,使得在不同的应用程序之间可以共享数据。调用ContentProviders可以访问这些数据库,而不用关心存储的细节。容提供器是应用程序的一个可选的机制,它提供标准语法来读取和写入数据。 实现容提供器和实现SQLite数据库有什么不同呢?应用程序实现SQLite数据库时,由应用程序直接和数据库接口,所以在应用程序中需要实现SQLite的接口db.onCreate()、db.insert()、db.update()、db.delete()、db.query()和db.close(),而实现容提供器时,在应用程序和数据库之间要实现一个ContentProviders程序,这个ContentProviders程序会直接和数据库接口,此时应用程序需要实现和ContentProviders程序接口的方法。 建立容提供器的实现,要先完成以下3项工作:建立一个系统来存储数据,大部分容提供器(ContentProviders)采用Android文件存储方法或以SQLite数据库来管理;继承ContentProvider类来读取数据,要读取数据的应用程序要通过ContentResolver和Cursor类来实现;在要读取数据的应用程序的AndroidManifest.*ML配置文件声明一个公开的URI。5.4实验步骤 1)编写工程ContentProviderTest。 2)进入到对应的应用程序界面,如图9-1所示。图9-1进入应用程序界面 3)点击插入按钮,即向表中插入一条数据,实验结果如图9-2所示。图9-2插入数据.cp即为我们此程序所在的包名。通过命令行的方式可以观察到,点击插入按钮之后,多出了databases文件夹,进入即为我们所创建的数据库FirstProvider.db,命令.schema查看数据库中的表,其中users即为我们所创建的表名。若再点击插入按钮,可以在插入一条数据,id为自增长,如图9-3所示。图7-56再次插入数据,id自增长 4)点击查询按钮,后台输入查询信息实验6广播事件处理BroadcastReceiver6.1实验目的掌握Android系统下如何自定义BroadcastReceiver来处理广播事件;掌握Android系统下系统广播事件的使用;掌握Android系统下Notification和NotificationManager的使用;6.2实验容编写程序掌握BroadCastReceiver的使用。6.3实验原理1.BroadcastReceiver BroadcastReceiver顾名思义是指广播接收器,他和事件处理机制类似,只不过事件处理机制是程序组件级别的(例如,*个按钮的点击事件),而广播事件处理机制是系统级别的。我们可以使用Intent来启动一个程序组件,我们还可以通过使用sendBroadcast()方法来发起一个系统级别的时间广播来传递消息。然后在我们的应用程序中实现BroadcastReceiver来监听和响应这些广播的Intent。 事件的广播比较简单,同样还是构建Intent对象,然后调用sendBroadcast()方法将广播发出。事件的接受是通过定义一个继承BroadcastReceiver的类来实现的,继承该类后覆盖其onReceive()方法,在该方法中响应事件。 Android系统中定义了很多标准的BroadcastAction来响应系统广播事件。这些广播是系统自动发出的,我们直接定义事件接收器进行接收就可以使用这些系统消息了,常见的标准Action常量如表7-7所示。下面我们通过实例来看看如何接受系统发出的广播,本实例我们通过接收系统启动完成(ACTION_BOOT_PLETED)广播来测试系统广播时间。接收系统发的广播,我们不需要自己载定义发出广播的Intent,只需要定义接收器就可以了。实例步骤说明如下。●创建一个MyReceiver类,该类继承BroadcastReceiver,fugaionReceive()显示系统启动完成广播信息package.bc;importandroid.content.BroadcastReceiver;importandroid.content.Conte*t;importandroid.content.Intent;importandroid.util.Log;publicclassMyReceivere*tendsBroadcastReceiver{OverridepublicvoidonReceive(Conte*tconte*t,Intentintent){//显示广播信息Log.i("my_tag","BOOT_PLETED~~~~~~~~~~~~~~~~");System.out.println("BOOT_PLETED~~~~~~~~~~~~~~~~");}}表7-7常见的标准Action常量常量名称常量值意义ACTION_BOOT_PLETEDent.action.BOOT_PLETED系统启动完成ACTION_TIME_CHANGEDent.action.ACTION_TIME_CHANGED时间改变ACTION_DATA_CHANGEDent.action.ACTION_DATA_CHANGED日期改变ACTION_TIMEZONE_CHANGEDent.action.ACTION_TIMEZONE_CHANGED时区改变ACTION_BATTERY_LOWent.action.ACTION_BATTERY_LOW电量低ACTION_MEDIA_EJECTent.action.ACTION_MEDIA_EJECT插入或拔出外部媒体ACTION_MEDIA_BUTTONent.action.ACTION_MEDIA_BUTTON按下媒体按钮ACTION_PACKAGE_ADDEDent.action.ACTION_PACKAGE_ADDED添加包ACTION_PACKAGE_REMOVEDent.action.ACTION_PACKAGE_REMOVED删除包●在AndroidManifest.*ml配置文件中注册该接受器,注意这里<intent-filter>中的<action>属性必须是"ent.action.BOOT_PLETED",才能接受系统启动完成广播事件。●当我们重新启动程序,并且系统启动完成时,程序运行结果如图11-1所示。图11-1广播程序运行结果 我们既可以在AndroidManifest中注册一个广播接收器,也可以通过代码的方式来注册。当然,我们也可以注销一个广播接收器。一帮我们是在Activity.onResume()中使用Conte*t.registerReceiver()方法来注册一个广播接收器,在Activity.onPause()中使用unregisterReceiver()方法来注销一个广播接收器。下面的代码片段显示了如何使用一个IntentFilter注册BroadcastReceiver。MyReceivermyReceiver=newMyReceiver(); IntentFilterfilter=newIntentFilter(); filter.addAction("ent.action.BOOT_PLETED"); //注册Receiver registerReceiver(myReceiver,filter); 为了注销一个BroadcastReceiver,应使用Conte*t.unregisterReceiver()方法,传入一个BroadcastReceiver实例。//注销Receiver unregisterReceiver(myReceiver);2.Notification和NotificationManager BroadcastReceiver组件并没有提供可视化的界面用来显示广播信息,这里我们可以用Notification和NotificationManager来实现可视化的信息显示。通过使用他们我们可以显示广播信息的容、图标以及振动等信息。 使用Notification也比较简单,一般获得系统级的服务NotificationManager,然后实例化Notification,设置其属性,通过NotificationManager发出通知就可以了。6.4实验步骤 1)编程工程BCTest02,并进行编译。这里我们定义一个MainActivity发出广播,定义一个MyReceiver类接收广播,当接收到广播后,启动另一个DisplayActivity,在该类过Notification和NotificationManager来可视化显示广播通知。 2)进入到相应的应用程序中,界面如图11-2所示。图11-2BCTest02界面 3)点击按钮“发出广播”,通过下面的语句来发出广播,通知栏会出现通知的图标及通知的容,如图11-3所示。//实例化Intent Intentintent=newIntent(); //设置Intentaction属性 intent.setAction(MY_ACTION); //发起广播 sendBroadcast(intent); 广播被MyReceiver类的onReceive()方法接收到,并启动DisplayActivity。图11-3DisplayActivity界面 4)点击按钮“取消通知”,通过下面的语句,则取消通知,通知栏的容消失,如图11-4所示。//取消通知 notificationManager.cancel(ID);图11-4取消通知 正如我们所看到的那样,可以为Notification对象设置图标,显示文字等信息。除了这些,Notification还有很多其他属性可以用来进行提示。例如,设置声音、振动和闪光灯等。设置方式如下所示:●提示音notification.defaults|=Notification.DEFAULT_SOUND;notification.sound=Uri.parse("file:///sdcard/sound.mp3");notification.sound=Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI,"6");●振动notification.defaults|=Notification.DEFAULT_VIBRATE;long[]vibrate={0,50,100,150};notification.vibrate=vibrate;●闪光灯notification.defaults|=Notification.DEFAULT_LIGHTS;notification.ledARGB=0*ff00ff00;notification.ledOnMS=300;notification.ledOffMS=1000;notification.flags|=Notification.FLAG_SHOW_LIGHTS;实验7SQLite和SQLiteDatabase应用7.1实验目的掌握Android操作系统下对SQLite关系型数据库实现增、删、改、查等基本操作;掌握使用adb访问SQLite的基本命令。7.2实验容编写程序实现对Android操作系统的SQLite数据库进行创建数据库、更新数据库、以及增、删、改、查的操作。7.3实验原理 Android操作系统采用标准SQLite数据库,提供管理数据库相关的API。SQLite数据库与常用PostgresSQL和MySQL一样,是属于RDBMS的一种,但不同的是,SQLite数据库常用到的类有4种:SQLiteOpenHelper,负责创建与打开数据库和版本管理,建立此类时,同时需要建立3个回调(CallBack)方法,分别是创建(onCreat)、更新(onUpdate)和打开(onOpen);SQLiteDataBase类管理数据库本体,提供添加(Insert)、更新(Update)、删除(Delete)、检索(Query)、执行SQL指令和其他管理数据库的功能;SQLiteCursor,表示当检索(Query)数据库时,指示到查询结果的初始位置,ContentValues,用来存储和保持表中的*行的相关数据,提供添加(Insert)、更新(Update)和删除(Delete)功能。 首先,利用SQLiteOpenHelper类来创建与打开数据库,建立此类时,同时需要建立3个CallBack方法,分别是创建onCreat()、更新onUpdate()和打开onOpen()。但是,SQLiteOpenHelper类并没有实际上创建与打开数据库,仅仅保持和数据接连的管道,还需要在SQLiteOpenHelper类上调用getWriteableDatabase()或getReadableDatabase()方法才会得到数据库SQLiteOpen类。7.4实验步骤 1)编写工程SQLiteDemo,并进行编译。 2)进入到对应的应用程序界面,如图8-1所示。图8-1进入应用程序界面 3)首先点击创建数据库按钮来创建数据库,更新数据库按钮

温馨提示

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

评论

0/150

提交评论