实验报告

课程名称

实验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. 高通平台FastMMI(FFBM模式)简介与进入方法

    参考: http://blog.csdn.net/tfslovexizi/article/details/51499979 http://www.voidcn.com/blog/jimbo_lee/a ...

  2. js的match()方法介绍

    定义和用法 match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配. 该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置. ...

  3. consul 模板配置内容的参数说明

    datacenters {{datacenters}} 数据中心 file {{file "/path/to/local/file"}} 读取本地文件的内容.如果不可读的话,会报错 ...

  4. TFS二次开发系列:六、TFS的版本控制

    在TFS中对于版本控制是在WorkSpace工作区来控制的. 首先我们先整理WorkSpace的一些基本使用方法. CheckIn:迁入挂起的操作 CreateMapping:创建一个本地映射地址 D ...

  5. nginx缓冲区优化

    关于缓冲, 主要是合理设置缓冲区大小, 尽量避免缓冲到硬盘时的情况 proxy_buffering proxy_buffering这个参数用来控制是否打开后端响应内容的缓冲区,如果这个设置为off,那 ...

  6. Openlayers自定义简单popup

    OpenLayers中可以使用很多种类型的popup,大家可以到Openlayers的 popupMatrix.html示例中看.之前存在这样一个错误的想法:popup和marker是绑定的,要有po ...

  7. 在WebBrowser中截获弹出对话框内容并将其屏蔽

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  8. 【树莓派】【转】将树莓派Raspberry Pi设置为无线路由器(WiFi热点AP,RTL8188CUS芯片)

    下文为转载,文章转自:http://wangye.org/blog/archives/845/,仅供本次学习实践参考. 最近又开始折腾起Raspberry Pi来了,因为某处上网需要锐捷拨号,于是我就 ...

  9. javascript高级编程3第二章:在html中使用javascript

    2.1 <script>元素 向html页面中插入javascript的主要方法,就是使用<script>元素.这个元素被加入到正式的html规范中.html4.01为< ...

  10. go排序

    补注: 近来又看 go 的排序, 发现以前对 go 的排序理解的有点浅了. go 的排序思路和 c 和 c++ 有些差别. c 默认是对数组进行排序, c++ 是对一个序列进行排序, go 则更宽泛一 ...