ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:778.80KB ,
资源ID:8720757      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8720757.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验七 数据共享.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验七 数据共享.docx

1、实验七 数据共享步骤1.1. 采用数据库方式实现数据共享PeopleProvider功能,完善“ContentResolverDemo”功能,实现对PeopleProvider的调用在已有程序界面基础上,分步骤实现下述功能(注,通过改变AndroidManifest.xml文件,选择其中一个Acitivity有效启动):采用数据库方式实现数据共享PeopleProvider功能: 数据添加 数据删除 数据查询 数据更新ContentProvider(数据提供者)是在应用程序间共享数据的一种接口机制。应用程序在不同的进程中运行,因此,数据和文件在不同应用程序之间是不能够直接访问的。SharedP

2、references和文件存储为跨越程序边界的访问提供了方法,但这些方法都有局限性。ContentProvider提供了更为高级的数据共享方法,应用程序可以指定需要共享的数据,而其他应用程序则可以在不知数据来源、路径的情况下,对共享数据进行查询、添加、删除和更新等操作。步骤2、完善“ContentResolverDemo”功能,实现对PeopleProvider的调用代码如下:People.java文件的完整代码package edu.tjut.cs.contentResolverDemo;import .Uri;public class People public static final

3、String MIME_DIR_PREFIX = vnd.android.cursor.dir; public static final String MIME_ITEM_PREFIX = vnd.android.cursor.item; public static final String MINE_ITEM = vnd.tjut.people; public static final String MINE_TYPE_SINGLE = MIME_ITEM_PREFIX + / + MINE_ITEM; public static final String MINE_TYPE_MULTIPL

4、E = MIME_DIR_PREFIX + / + MINE_ITEM; public static final String AUTHORITY = edu.tjut.cs.peopleprovider; public static final String PATH_SINGLE = people/#; public static final String PATH_MULTIPLE = people; public static final String CONTENT_URI_STRING = content:/ + AUTHORITY + / + PATH_MULTIPLE; pub

5、lic static final Uri CONTENT_URI = Uri.parse(CONTENT_URI_STRING); public static final String KEY_ID = _id; public static final String KEY_NAME = name; public static final String KEY_AGE = age; public static final String KEY_HEIGHT = height;PeopleProvider.java文件的完整代码package edu.tjut.cs.peopleProvider

6、;import android.content.ContentProvider;import android.content.ContentUris;import android.content.ContentValues;import android.content.Context;import android.content.UriMatcher;import android.database.Cursor;import android.database.SQLException;import android.database.sqlite.SQLiteDatabase;import an

7、droid.database.sqlite.SQLiteOpenHelper;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteQueryBuilder;import .Uri;public class peopleProvider extends ContentProvider private static final String DB_NAME = people.db; private static final String DB_TABLE =

8、 peopleinfo; private static final int DB_VERSION = 1; public static final String KEY_ID = _id; public static final String KEY_NAME = name; public static final String KEY_AGE = age; public static final String KEY_HEIGHT = height; private SQLiteDatabase db; private DBOpenHelper dbOpenHelper; private s

9、tatic final int MULTIPLE_PEOPLE = 1; private static final int SINGLE_PEOPLE = 2; private static final UriMatcher uriMatcher; static uriMatcher = new UriMatcher(UriMatcher.NO_MATCH); uriMatcher.addURI(People.AUTHORITY, People.PATH_MULTIPLE, MULTIPLE_PEOPLE); uriMatcher.addURI(People.AUTHORITY, People

10、.PATH_SINGLE, SINGLE_PEOPLE); private static class DBOpenHelper extends SQLiteOpenHelper public DBOpenHelper(Context context, String name, CursorFactory factory, int version) super(context, name, factory, version); / TODO Auto-generated constructor stub private static final String DB_CREATE = create

11、 table + DB_TABLE + ( + KEY_ID + integer primary key autoincrement, + KEY_NAME + text not null, + KEY_AGE + integer, + KEY_HEIGHT + float); Override public void onCreate(SQLiteDatabase db) / TODO Auto-generated method stub db.execSQL(create table peopleinfo (_id integer primary key autoincrement, na

12、me text not null, age integer, height float);); Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) / TODO Auto-generated method stub db.execSQL(DROP TABLE IF EXISTS + DB_TABLE); onCreate(db); Override public int delete(Uri arg0, String arg1, String arg2) / TODO Auto-ge

13、nerated method stub int count = 0; switch(uriMatcher.match(arg0) case MULTIPLE_PEOPLE: count = db.delete(DB_TABLE, arg1, arg2); break; case SINGLE_PEOPLE: String segment = arg0.getPathSegments().get(1); count = db.delete(DB_TABLE, People.KEY_ID + = + segment, arg2); break; default: throw new Illegal

14、ArgumentException(Unsupported URI:+arg0); getContext().getContentResolver().notifyChange(arg0, null); return count; Override public String getType(Uri arg0) / TODO Auto-generated method stub switch(uriMatcher.match(arg0) case MULTIPLE_PEOPLE: return People.MINE_TYPE_MULTIPLE; case SINGLE_PEOPLE: ret

15、urn People.MINE_TYPE_SINGLE; default: throw new IllegalArgumentException(Unknown uri:+arg0); Override public Uri insert(Uri arg0, ContentValues arg1) / TODO Auto-generated method stub long id = db.insert(DB_TABLE, null, arg1); if(id 0) Uri newUri = ContentUris.withAppendedId(People.CONTENT_URI, id);

16、 getContext().getContentResolver().notifyChange(newUri, null); return newUri; throw new SQLException(Failed to insert row into + arg0); Override public boolean onCreate() / TODO Auto-generated method stub Context context = getContext(); dbOpenHelper = new DBOpenHelper(context, DB_NAME, null, DB_VERS

17、ION); db = dbOpenHelper.getWritableDatabase(); if(db = null) return false; else return true; Override public Cursor query(Uri arg0, String arg1, String arg2, String arg3, String arg4) / TODO Auto-generated method stub SQLiteQueryBuilder qb = new SQLiteQueryBuilder(); qb.setTables(DB_TABLE); switch(u

18、riMatcher.match(arg0) case SINGLE_PEOPLE: qb.appendWhere(People.KEY_ID + = + arg0.getPathSegments().get(1); break; default: break; Cursor cursor = qb.query(db, arg1, arg2, arg3, null, null, arg4); cursor.setNotificationUri(getContext().getContentResolver(), arg0); return cursor; Override public int

19、update(Uri arg0, ContentValues arg1, String arg2, String arg3) / TODO Auto-generated method stub int count; switch(uriMatcher.match(arg0) case MULTIPLE_PEOPLE: count = db.update(DB_TABLE, arg1, arg2, arg3); break; case SINGLE_PEOPLE: String segment = arg0.getPathSegments().get(1); count = db.update(

20、DB_TABLE, arg1, People.KEY_ID+=+segment, arg3); break; default: throw new IllegalArgumentException(Unknown URI: + arg0); getContext().getContentResolver().notifyChange(arg0, null); return count; ContentResolverDemo.java文件的完整代码package edu.tjut.cs.contentResolverDemo;import edu.tjut.cs.contentResolver

21、Demo.R;import android.app.Activity;import android.content.ContentResolver;import android.content.ContentValues;import android.database.Cursor;import .Uri;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;publi

22、c class ContentResolverDemoActivity extends Activity /* Called when the activity is first created. */ private ContentResolver resolver; Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); final EditText nameEditText = (EditText)

23、 findViewById(R.id.nameEditText); final EditText ageEditText = (EditText) findViewById(R.id.ageEditText); final EditText heightEditText = (EditText) findViewById(R.id.heightEditText); final EditText idEditText = (EditText) findViewById(R.id.idEditText); final TextView resultTextView = (TextView) fin

24、dViewById(R.id.resultView); Button addButton = (Button) findViewById(R.id.addButton); Button showAllButton = (Button) findViewById(R.id.showAllButton); Button clearAllButton = (Button) findViewById(R.id.clearAllButton); Button removeAllButton = (Button) findViewById(R.id.removeAllButton); Button del

25、eteIDButton = (Button) findViewById(R.id.deleteIDButton); Button queryIDButton = (Button) findViewById(R.id.queryIDButton); Button updateIDButton = (Button) findViewById(R.id.updateIDButton); resolver = this.getContentResolver(); addButton.setOnClickListener(new View.OnClickListener() Override publi

26、c void onClick(View v) / TODO Auto-generated method stub ContentValues values = new ContentValues(); values.put(People.KEY_NAME, nameEditText.getText().toString(); values.put(People.KEY_AGE, Integer.parseInt(ageEditText.getText().toString(); values.put(People.KEY_HEIGHT, Float.parseFloat(heightEditT

27、ext.getText().toString(); Uri newUri = resolver.insert(People.CONTENT_URI, values); resultTextView.setText(添加成功,URI:+newUri); ); showAllButton.setOnClickListener(new View.OnClickListener() Override public void onClick(View v) / TODO Auto-generated method stub Cursor cursor = resolver.query(People.CO

28、NTENT_URI, new String People.KEY_ID, People.KEY_NAME, People.KEY_AGE, People.KEY_HEIGHT, null, null, null); if(cursor = null) resultTextView.setText(数据库中没有数据); return; String msg = 数据库: + String.valueOf(cursor.getCount() + 条记录 + n; if(cursor.moveToFirst() do msg += ID: + cursor.getInt(cursor.getColu

29、mnIndex(People.KEY_ID) + ,; msg += 姓名: + cursor.getString(cursor.getColumnIndex(People.KEY_NAME) + ,; msg += 年龄: + cursor.getInt(cursor.getColumnIndex(People.KEY_AGE) + ,; msg += 身高: + cursor.getFloat(cursor.getColumnIndex(People.KEY_HEIGHT) + n; while(cursor.moveToNext(); resultTextView.setText(msg); ); clearAllButton.setOnClickListener(new View.OnClickListen

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1