实验报告

课程名称

实验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. SQL锁死解决办法

    SQL Server 表,记录 死锁解决办法 1. 先根据以下语句 查询 哪些表被 死锁,及 死锁的 spid SELECT request_session_id spid,OBJECT_NAME(r ...

  2. String.getBytes()

    package entity; import java.io.UnsupportedEncodingException; public class Test { public static void ...

  3. ajax post 请求415\ 400 错误

    今天用ajax 向后台发送 post请求时,出现了两个问题: 1, 发送请求后,控制台 返回  Unsupported media type-415(不支持的媒体类型),这时突然想起来,post 请求 ...

  4. Scope 安装和使用

    Scope 安装和使用 一.安装 1. 软件下载 https://sourceforge.net/projects/cscope/files/ 2. 解压 3. 安装 ./configure --pr ...

  5. Js 常用函数

    1. 算数函数(Math) 1)Js小数取整 常用于:分页算法 js 小数取整的函 .丢弃小数部分,保留整数部分 js:parseInt(/) .向上取整,有小数就整数部分加1 js: Math.ce ...

  6. 如何解决结果由block返回情况下的同步问题(转)

    开发中经常会遇到一种简单的同步问题: 系统在获取资源时,采用了block写法,外部逻辑需要的结果是在block回调中返回的 举个例子: 请求获取通讯录权限的系统弹窗 调用系统方法请求通讯录权限: AB ...

  7. C++编程小知识随手记

    C++编程小知识点: (1)queue和vector类型: 加入元素 : queue是queue.push(),vector是vector.push_back(), 删除元素: queue是queue ...

  8. samba完美安装

    感觉是一个相当强大的东西. Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件.它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务.为客户机/服务器型协议,客户机通过该协议 ...

  9. openssl 非对称加密 RSA 加密解密以及签名验证签名

    1. 简介 openssl  rsa.h 提供了密码学中公钥加密体系的一些接口, 本文主要讨论利用rsa.h接口开发以下功能 公钥私钥的生成 公钥加密,私钥解密 私钥加密,公钥解密 签名:私钥签名 验 ...

  10. json数组转普通数组 普通数组转json数组

    1.json_decode() json_decode (PHP 5 >= 5.2.0, PECL json >= 1.2.0) json_decode — 对 JSON 格式的字符串进行 ...