实验报告

课程名称

实验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. iOS 10.0适配之旅

    1.升级Xcode体验 升级到Xcode之后,调试程序好多东西都不是太适应 控制台莫名给你打印一堆不是太好理解的东西 之前使用 Alcatraz 下载的插件都不能用(如何使用Alcatraz) 打开麦 ...

  2. 方法重载的小demo

    方法的重载(overload)要求:1,同一个类中2,方法名必须相同3,方法的参数列表不同(1,参数的个数不同2,参数类型不同,但是参数名相同) 注:方法的重载与方法的返回值类型没有关系 packag ...

  3. HDU 2896 病毒侵袭(AC自动机)

    病毒侵袭 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  4. SqlServer 注入技巧

    一.SA权限执行命令,如何更快捷的获取结果? 有显示位 显示位 其实这里的关键并不是有无显示位.exec master..xp_cmdshell 'systeminfo'生成的数据写进一张表的时候,会 ...

  5. linux终端快捷键

    tab 补全 ctrl+k 删除此处到末尾所有内容 ctrl+u 删除此处到开始所有内容 ctrl+a 将光标移至开始处 cttl+e 将光标移至结尾 ctrl+l 清屏 ctrl+c 删除整行或停止 ...

  6. hive搭建配置

    下载cd /data0/software/hivewget http://mirror.bit.edu.cn/apache/hive/hive-0.12.0/hive-0.12.0-bin.tar.g ...

  7. PostgreSQL的 initdb 源代码分析之十六

    继续分析 setup_description(); 展开后: 就是要把 share/postgres.description 文件的内容读入到 pg_description 和 pg_shdescri ...

  8. 基于visual Studio2013解决算法导论之045斐波那契堆

     题目 斐波那契堆 解决代码及点评 // 斐波那契堆.cpp : 定义控制台应用程序的入口点. // #include<iostream> #include<cstdio> ...

  9. eclipse中设置自动生成的author,date等注释

    转自:http://blog.csdn.net/zhouhong1026/article/details/38396311 转自:http://hi.baidu.com/qianjian21/blog ...

  10. 19/03/30Python笔记

    一.三元运算 a = 1 if (条件) else a = 2 #如果条件成立,a = 1,否则a = 2 二.文件的处理 1.读取 f = open("user.txt",&qu ...