实验报告

课程名称

实验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. [转载]LazyWriter(惰性写入器) 进程的作用

      Q:What Does the LazyWriter Process Do? The LazyWriter process is a periodic process that checks th ...

  2. 创建XMLHttpRequest对象

    创建XMLHttpRequest对象 XMLHttpRequest对象: 用于在后台与服务器交换数据,可以在不重新加载整个页面的情况下,对页面的部分内容进行更新. 创建XMLHttpRequest对象 ...

  3. Oracle(修改表结构和约束)

    目标: 1.添加和修改列 2.添加,enable,disable,或者remove约束 3.删除表 4.删除表中所有数据并回到表定义的初始状态(截断表) 5.修改对象的名字 6.给对象添加注释,从数据 ...

  4. inline-boock的默认间距

    1 2 3 4 div{width:900px;} div li{ display:inline-block; width:300px;} <ul>     <li></ ...

  5. Sublime Text的常用插件

    工欲善其事,必先利其器.好的插件会更多的帮助我们装逼. 最新感悟:也不要装太多的插件.有些无用的插件可以删除,有时反而臃肿.bloger下载官方最新稳定版st3 3126下载下来25M左右.安装十来个 ...

  6. HMI与设计模式

    设计模式是做一个好的架构的一个基础.那么设计模式具体的概念是啥呢?百度百科曰:设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是 ...

  7. DSO的记录模式Record Mode字段测试

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  8. LTE Manual ——Logging(翻译)

    LTE Manual ——Logging(翻译) (本文为个人学习笔记,如有不当的地方,欢迎指正!) 9 Logging   ns-3 日志功能可以用于监测或调试仿真程序的进展.日志输出可以通过 ma ...

  9. CSS关于子元素设置了float属性后父元素高度为0的解释和解决方法

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...

  10. property内存管理策略

    1普通数据,用weak 2delegate,用weak 3一般对象,用strong 4NSString,用copy 5block,用copy