实验报告

课程名称

实验8  SQLite数据库操作

实验日期

2016.5.6

实验项目名称

多媒体应用开发

实验地点

S30010

实验类型

□验证型    √设计型    □综合型

学  时

一、实验目的及要求(本实验所涉及并要求掌握的知识点)

设计一个个人通讯录,掌握Android平台下的数据库开发,该个人通讯录主要包括联系人列表和联系人详细信息等界面。程序主界面是通讯录的目录显示手机上联系人的名称。点击联系人的姓名可以显示联系人的详细信息。在按了MEMU键之后会弹出菜单栏。单击菜单栏上的按钮可以添加联系人和删除联系人

二、实验环境(本实验所使用的硬件设备和相关软件)

(1)PC机

(2)操作系统:Windows XP

(3)软件: Eclipse, JDK1.6,Android SDK,ADT

三、实验内容及步骤

(1)确定数据库的数据结构。

(2)定义字符串资源string.xml

(3)开发布局文件activity_main.xml用于显示联系人列表。

(4)layout目录下新建一个tvdetail.xml,用于显示联系人详细信息.

四、实验结果(本实验源程序清单及运行结果或实验结论、实验设计图)

代码:

MainActivity代码:

public class MainActivity extends Activity {

private ListView lv;

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

lv=(ListView)findViewById(R.id.lv);

lv.setAdapter(new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_single_choice));

lv.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

final ArrayList<HashMap<String, Object>> listItem=new ArrayList<HashMap<String,Object>>();

for (int i = 0; i < 3; i++) {

HashMap<String, Object> map=new HashMap<String, Object>();

map.put("DetailName", R.id.editText1);

map.put("DetailMobile", R.id.editText2);

listItem.add(map);

}

SimpleAdapter simpleAdapter=new SimpleAdapter(MainActivity.this, listItem, R.layout.item,

new String[]{"DetailName","DetailMobile"} , new int[]{R.id.editText1,R.id.editText2});

lv.setAdapter(simpleAdapter);   //为ListView绑定适配器

lv.setOnItemClickListener(new OnItemClickListener() {

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {

Intent intent=new Intent();

intent.setClass(MainActivity.this, DetailActivity.class);

startActivity(intent);

finish();

}

});

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.main, menu);

return super.onCreateOptionsMenu(menu);

}

public boolean onOptionsItemSelected(MenuItem item){

item.setChecked(true);

switch (item.getItemId()) {

case R.id.menu1:

item.setChecked(true);

Intent intent=new Intent();

intent.setClass(MainActivity.this, DetailActivity.class);

startActivity(intent);

MainActivity.this.finish();

break;

case R.id.menu2:

item.setChecked(true);

break;

default:

break;

}

return super.onOptionsItemSelected(item);

}

}

DetailActivity代码:

public class DetailActivity extends Activity{

private EditText name;

private EditText mobil;

private EditText email;

private EditText address;

private EditText company;

private MyOpenHelper helper;

private Button savebtn;

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.tvdetail);

name=(EditText)findViewById(R.id.editText1);

mobil=(EditText)findViewById(R.id.editText2);

email=(EditText)findViewById(R.id.editText3);

address=(EditText)findViewById(R.id.editText4);

company=(EditText)findViewById(R.id.editText5);

savebtn=(Button)findViewById(R.id.button1);

savebtn.setOnClickListener(new OnClickListener() {

public void onClick(View arg0) {

helper=new MyOpenHelper(DetailActivity.this, "contacts.db",null, 1);

SQLiteDatabase db = helper.getReadableDatabase();     //获得可读的数据库

ContentValues values = new ContentValues();

String name2=name.getTag().toString();

String mobile2=mobil.getTag().toString();

String email2=email.getTag().toString();

String addr2=address.getTag().toString();

String comp2=company.getTag().toString();

if (name2.equals("")||mobile2.equals("")||email2.equals("")||addr2.equals("") ){

Toast.makeText(DetailActivity.this, "请输入联系人信息",Toast.LENGTH_LONG).show();}

else {

Cursor cursor=db.rawQuery("select * from contacts where name=? ",new String[]{name2});

if (cursor.getCount()<=0) {

values.put("name",name.getText().toString());

values.put("mobile",mobil.getText().toString());

values.put("email", email.getText().toString());

values.put("address",address.getText().toString());

db.insert("contacts", null, values);

values.clear();

Toast.makeText(DetailActivity.this, "保存成功",Toast.LENGTH_LONG).show();

}else {

Toast.makeText(DetailActivity.this, "已存在该联系人",Toast.LENGTH_LONG).show();}

}         }

});

}

protected void onDestroy() {

super.onDestroy();}

}

MyOpenHelper代码:

public class MyOpenHelper extends SQLiteOpenHelper{

public static final String CREATE__CONTACTS="create table contacts(id integer primary key autoincrement,name,mobile,email,address)";

private Context myContext;

public MyOpenHelper(Context context, String name, CursorFactory factory,

int version) {

super(context, name, factory, version);

myContext=context;

}

@Override

public void onCreate(SQLiteDatabase db) {

db.execSQL(CREATE__CONTACTS);

Toast.makeText(myContext, "成功", Toast.LENGTH_LONG).show();

}

public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {

// TODO Auto-generated method stub}

}

运行结果:(截图)

五、实验总结(对本实验结果进行分析,实验心得体会及改进意见)

本次试验并未能全部完成,Layout中的布局能实现,在增加联系人的功能中,方法和代码都基本理解并写出,但在运行时候出现崩溃现象,仍在进一步调试中。

实验评语

 

实验成绩

 

指导教师签名:              年   月   日

           

实验8 SQLite数据库操作的更多相关文章

  1. 【Android】实验8 SQLite数据库操作2016.5.12

    实验8  SQLite数据库操作 [目的] 设计一个个人通讯录,掌握Android平台下的数据库开发,该个人通讯录主要包括联系人列表和联系人详细信息等界面. [要求] 程序主界面是通讯录的目录显示手机 ...

  2. 实验八 sqlite数据库操作

    实验报告 课程名称 基于Android平台移动互联网开发 实验日期 2016年5月3日 实验项目名称 SQLite数据库操作 实验地点 S30010 实验类型 □验证型    √设计型    □综合型 ...

  3. 我的Android六章:Android中SQLite数据库操作

    今天学习的内容是Android中的SQLite数据库操作,在讲解这个内容之前小编在前面有一篇博客也是讲解了SQLite数据库的操作,而那篇博客的讲解是讲述了 如何在Window中通过DOM来操作数据库 ...

  4. [python]用Python进行SQLite数据库操作

    用Python进行SQLite数据库操作 1.导入Python SQLITE数据库模块 Python2.5之后,内置了SQLite3,成为了内置模块,这给我们省了安装的功夫,只需导入即可~  ]: u ...

  5. 安卓 SQLite数据库操作实例

    前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了. 在Android 运行时环境包含了完整的 SQLite. 首先介绍一下SQLite这个数据库: SQLi ...

  6. 在安卓开发中使用SQLite数据库操作实例

    前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了. 在Android 运行时环境包含了完整的 SQLite. 首先介绍一下SQLite这个数据库: SQLi ...

  7. iOS 中SQLite数据库操作

    在iOS中实现SQLite数据库的操作:1.导入框架(libsqlite3.0.tbd) 2.导入头文件<sqlite3.h> 3.实现数据的增删改查 实现简单 SQLite数据库操作 的 ...

  8. sqlite数据库操作详细介绍 增删改查,游标

    sqlite数据库操作详细介绍 增删改查,游标     本文来源于www.ifyao.com禁止转载!www.ifyao.com Source code     package com.example ...

  9. windows phone 8.1开发SQlite数据库操作详解

    原文出自:http://www.bcmeng.com/windows-phone-sqlite1/ 本文小梦将和大家分享WP8.1中SQlite数据库的基本操作:(最后有整个示例的源码)(希望能通过本 ...

随机推荐

  1. js 、jsdoc生成33

    ============== js 点击事件后没方法名,调用有方法名 document.getElementById('lind').onclick=abc;//传统的id选择器 中没有# 哦 fun ...

  2. python中深复制与浅复制

    转载:http://blog.csdn.net/vicken520/article/details/8227524 java中也经常碰见这种问题.时间原因就不写java方面啦 Python深复制浅复制 ...

  3. iOS上传文件代码,自定义组装body

    以下代码为上传文件所用代码,简单方便,搞了好久,终于知道这么简单的方式来上传. 其它类库也就是把这几句代码封装的乱七八糟得,让你老久搞不懂原理.不就是在body上面加点字符串,body下面加点字符串, ...

  4. Xcode 8

    (一)Xcode8去掉多余LOG 1.打开我们的项目,进入EditScheme 2.我们在Environment Variables中添加OS_ACTIVITY_MODE=disable

  5. MySQL导入SQL文件及常用命令

      在MySQL Qurey   Brower中直接导入*.sql脚本,是不能一次执行多条sql命令的,在mysql中执行sql文件的命令: mysql> source   d:/myprogr ...

  6. GET方法和POST方法

    package com.hanqi.cunchu; import android.app.ProgressDialog; import android.support.v7.app.AppCompat ...

  7. Q

  8. centos升级glibc(升级到2.14版)

    1.下载源码包 到http://ftp.gnu.org/gnu/glibc/下载glibc-2.14.tar.xz 2.解压 tar glibc-2.14.tar.gz 3.创建build目录 cd ...

  9. log4net一些配置说明

    <configuration> <configSections> <section name="log4net" type="System. ...

  10. Canvas实现图片放大缩小移动操作

    对于HTML5相信大家都不陌生,很早就出来了,但是貌似都没有真正的使用过.最近做项目时要实现这样一个需求:一个图片,大小不固定,要求能实现类似地图一样放大.缩小.移动功能.这里就很合适使用html5的 ...