Android实验四.doc_第1页
Android实验四.doc_第2页
Android实验四.doc_第3页
Android实验四.doc_第4页
Android实验四.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

计算机科学与技术系 实 验 报 告专业名称 计算机科学与技术 课程名称 Android应用程序开发 项目名称 数据存储与访问 班 级计科1班 学 号 姓 名 同组人员 无 实验日期 2016.9.27 一、实验目的与要求:1.1 实验目的掌握 SQLite 存储数据的方法,掌握 ContentProvider 的用法。1.2 实验要求(1) 练习使用 SQLite 数据库的方式进行数据存储和访问。(2) 练习使用 ContentProvider 访问其他应用程序的数据。(3) 完成实验报告。二、实验内容2.1 实验原理(1) 数据存储方式 SharedPreferences、File存储、SQLite数据库(2) ContentProvider 数据共享在创建ContentProvider前,首先要实现底层的数据源,数据源包括数据库、文件系统或网络等,然后继承ContentProvider类中实现基本数据操作的接口函数,包括添加、删除、查找和更新等功能,调用者不能直接调用ContentProvider的接口函数,而需要使用ContentResolver对象,通过URI间接调用ContentProvider,调用关系如图:2.2 实验过程及截图(1) 新建 Android 应用程序项目 SQLiteTest,创建 SQLite 数据库和表,并实现数据库数据读取和存入操作。1) 新建SQLiteTest项目2) 代码逻辑:MainActivity.java 文件 package edu.hfuu.sqlitetest;import android.app.Activity;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends Activity SQLiteDatabase sld,sdtest; Button bt_open,bt_close,bt_add,bt_delete,bt_update,bt_query; EditText et_log,et_query; Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bt_open=(Button)findViewById(R.id.Button01); bt_close=(Button)findViewById(R.id.Button02); bt_add=(Button)findViewById(R.id.Button03); bt_delete=(Button)findViewById(R.id.Button04); bt_update=(Button)findViewById(R.id.Button05); bt_query=(Button)findViewById(R.id.Button06); et_log=(EditText)this.findViewById(R.id.EditText01); et_query=(EditText)this.findViewById(R.id.EditText02); /创建、打开数据库 public void createDatabase(View v) try sdtest=openOrCreateDatabase(dbtest.db3, MODE_PRIVATE, null); sld=SQLiteDatabase.openOrCreateDatabase(this.getFilesDir().toString()+/mydb.db3, null); appendMessage(et_log,数据库已经成功打开!); String sql=create table if not exists student(sid integer primary key autoincrement,sno char(5),+stuname varchar(20),+sage integer); sld.execSQL(sql); appendMessage(et_log,student已经成功创建!); catch(Exception e) Toast.makeText(this, 数据库错误:+e.toString(), Toast.LENGTH_SHORT).show(); /关闭数据库 public void closeDatabase(View v) try sld.close(); sdtest.close(); appendMessage(et_log,数据库已经成功关闭!); catch(Exception e) Toast.makeText(this, 数据库错误:+e.toString(), Toast.LENGTH_SHORT).show(); /插入记录的方法 public void insert(View v) try String sql=insert into student values(null,10001,Jarry,23); sld.execSQL(sql); appendMessage(et_log,成功插入一条记录!); catch(Exception e) Toast.makeText(this, 数据库错误:+e.toString(), Toast.LENGTH_SHORT).show(); /删除记录的方法 public void delete(View v) try String sql=delete from student; sld.execSQL(sql); appendMessage(et_log,成功删除所有记录!); catch(Exception e) Toast.makeText(this, 数据库错误:+e.toString(), Toast.LENGTH_SHORT).show(); /修改记录的方法 public void update(View v) try String sql=update student set stuname=Tom; sld.execSQL(sql); appendMessage(et_log,成功更新记录!); catch(Exception e) Toast.makeText(this, 数据库错误:+e.toString(), Toast.LENGTH_SHORT).show(); /查询的方法 public void query(View v) try String sql=select * from student where sage?; Cursor cur=sld.rawQuery(sql, new String20); addMessage(et_query,序号tt学号tt姓名tt年龄); while(cur.moveToNext() int sid=cur.getInt(0); String sno=cur.getString(1); String sname=cur.getString(2); int sage=cur.getInt(3); appendMessage(et_query,sid+tt+sno+tt+sname+tt+sage); cur.close(); catch(Exception e) Toast.makeText(this, 数据库错误:+e.toString(), Toast.LENGTH_SHORT).show(); /向文本区中添加文本 public void appendMessage(EditText et,String msg) et.append(msg+n); public void addMessage(EditText et,String msg) et.setText(msg+n); 3) 布局文件:activity_main.xml 文件4) 实验结果运行项目后打开数据库,插入记录并查询修改记录 删除记录并关闭数据库(2) 实现通过 ContentResolver 读取应用程序 SQLiteTest 中数据的功能 1) 在 SQLiteTest 程序中添加 ContentProvider,提供数据访问接口 a. 新建 Java 文件 MyContentProvider.java,继承自 ContentProvider 类,代码如下: package edu.hfuu.sqlitetest;import android.content.ContentProvider;import android.content.ContentValues;import android.content.UriMatcher;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import .Uri;public class MyContentProvider extends ContentProviderprivate static final UriMatcher um;staticum=new UriMatcher(UriMatcher.NO_MATCH);um.addURI(vider.student, stu, 1);SQLiteDatabase sld;Overridepublic String getType(Uri uri)return null;Overridepublic Cursor query(Uri uri, String projection, String selection,String selectionArgs, String sortOrder)switch(um.match(uri)case 1:Cursor cur=sld.query(student,projection,selection,selectionArgs,null,null,sortOrder);return cur;return null;Overridepublic int delete(Uri arg0, String arg1, String arg2)/ TODO Auto-generated method stubreturn 0;Overridepublic Uri insert(Uri uri, ContentValues values)/ TODO Auto-generated method stubreturn null;Overridepublic boolean onCreate()sld=SQLiteDatabase.openOrCreateDatabase(getContext().getFilesDir().getPath()+/mydb.db3, /数据库所在路径null /CursorFactory);return false;Overridepublic int update(Uri uri, ContentValues values, String selection,String selectionArgs)/ TODO Auto-generated method stubreturn 0;b. 在 AndroidManifest.xml 中注册该 ContentProvider 2) 新建 ContentResolverTest 项目,通过 ContentResolver 接口读取 SQLiteTest 程序数据库中的数据 a. MainActivity.java 代码如下:package edu.hfuu.contentresolvertest;import android.app.Activity;import android.content.ContentResolver;import android.database.Cursor;import .Uri;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;public class MainActivity extends ActivityContentResolver cr;Overridepublic void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);cr=this.getContentResolver();/初始化查询按钮Button b=(Button)this.findViewById(R.id.Button01);b.setOnClickListener(new OnClickListener()Overridepublic void onClick(View v)EditText et=(EditText)findViewById(R.id.EditText01);String stuname=et.getText().toString().trim();Cursor cur=cr.query(Uri.parse(content:/vider.student/stu),new Stringsid,sno,stuname,sage,stuname=?,new Stringstuname,sa

温馨提示

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

最新文档

评论

0/150

提交评论