实验八 SQLite数据库操作

实验报告


课程名称


基于Android平台移动互联网开发


实验日期


2016年4月29日


实验项目名称


SQLite数据库操作


实验地点


S30010


实验类型


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


学  时


2


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


1. 设计一个个人通讯录,掌握Android平台下的数据库开发,该个人通讯录主要包括联系人列表和联系人详细信息等界面。

2. 程序主界面是通讯录的目录显示手机上联系人的名称。点击联系人的姓名可以显示联系人的详细信息。在按了MEMU键之后会弹出菜单栏。单击菜单栏上的按钮可以添加联系人和删除联系人。


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


(1)PC机

(2)操作系统:Windows XP

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


三、实验内容及步骤


1.新建一个名为PersonalAddr的工程

2. 在res/drawable-mdpi目录下拷入程序要用的图标

3. 定义字符串资源string.xml

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

5. layout目录下新建一个detail.xml,用于显示联系人详细信息

6. 开发数据库辅助类MyOpenHelper类,新建一个MyOpenHelper.java。

7. 接下来便进入MainActivity端的开发,实现数据库增加、删除、修改记录等操作

8. 新建一个Activity名字叫DetailActivity.java,实现联系人详细信息显示功能。


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


代码:

MainActivity.java中:

package com.example.personaladdr;

import java.security.PublicKey;

import java.util.List;

import android.app.Activity;

import android.app.AlertDialog;

import android.content.DialogInterface;

import android.content.Intent;

import android.database.Cursor;

import android.os.Bundle;

import android.view.Menu;

import android.view.View;

import android.widget.AdapterView;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.ListView;

public class MainActivity extends Activity {

private MyOpenHelper db;

private ListView lView;

private Cursor cursor;

final int MENU_ADD=Menu.FIRST;

final int MENU_CHANGE=Menu.FIRST+1;

private List<String>ids;

private List<String>names;

private List<String>phones;

AlertDialog dialog;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//db=new MyOpenHelper(context, name, null, 1);

//db=new MyOpenHelper(this);

lView=(ListView)findViewById(R.id.db_listview);

lView.setOnItemClickListener(new OnItemClickListener() {

@Override

public void onItemClick(AdapterView<?> arg0, View arg1, int position,

long arg3) {

// TODO Auto-generated method stub

Intent intent=new Intent();

intent.putExtra("cmd", 0);

//0代表查询联系人,1代表添加联系人

String contants_id=ids.get(position);

intent.putExtra("id", contants_id);

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

startActivity(intent);

}

});

lView.setOnItemClickListener(new OnItemClickListener() {

@Override

public void onItemClick(AdapterView<?> arg0, View arg1, final int position,

long arg3) {

// TODO Auto-generated method stub

}

});

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

return super.onCreateOptionsMenu(menu);

}

}

MyOpenHelper.java中:

package com.example.personaladdr;

import android.R.integer;

import android.R.string;

import android.content.ContentValues;

import android.content.Context;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteDatabase.CursorFactory;

import android.database.sqlite.SQLiteOpenHelper;

public class MyOpenHelper extends SQLiteOpenHelper{

public static final String DB_NAME="personal_contacts";

public static final String TABLE_NAME="contacts";

public static final String ID="_id";

public static final String NAME="name";

public static final String PHONE="phone";

public static final String MOBILE="mobile";

public static final String EMAIL="email";

public static final String POST="post";

public static final String ADDR="addr";

public static final String COMP="comp";

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

int version) {

super(context, DB_NAME, null, 1);//调用父类构造器

// TODO Auto-generated constructor stub

}

@Override

public void onCreate(SQLiteDatabase db) {//重写onCreate方法

// TODO Auto-generated method stub

db.execSQL("create table if not exists"+TABLE_NAME+"("

+ID+"integer primary key,"

+NAME+"varchar,"

+PHONE+"varchar,"

+MOBILE+"varchar,"

+EMAIL+"varchar,"

+POST+"varchar,"

+ADDR+"varchar,"

+COMP+"varchar)");

}

@Override

public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {//重写onUpgrade方法

// TODO Auto-generated method stub

db.execSQL("drop table if exists"+TABLE_NAME);

onCreate(db);

}

public Cursor selectContants(){

SQLiteDatabase db=this.getReadableDatabase();

Cursor cursor=db.query(TABLE_NAME, null, null, null, null, null, null);

return cursor;

}

public long insertContants(String[] strArray){

SQLiteDatabase db=this.getWritableDatabase();

ContentValues cv=new ContentValues();

cv.put(NAME, strArray[0]);

cv.put(PHONE, strArray[1]);

cv.put(MOBILE, strArray[2]);

cv.put(EMAIL, strArray[3]);

cv.put(POST, strArray[4]);

cv.put(ADDR, strArray[5]);

cv.put(COMP, strArray[6]);

return db.insert(TABLE_NAME, null, cv);

}

public void deleteContants(String id){

SQLiteDatabase db=this.getWritableDatabase();

String where=ID+"=?";

String[] whereValues={id};

db.delete(TABLE_NAME, where, whereValues);

}

public int updateContants(String id,String[] strArray){

SQLiteDatabase db=this.getWritableDatabase();

String where=ID+"=?";

String[] whereValues={id};

ContentValues cv=new ContentValues();

cv.put(NAME, strArray[0]);

cv.put(PHONE, strArray[1]);

cv.put(MOBILE, strArray[2]);

cv.put(EMAIL, strArray[3]);

cv.put(POST, strArray[4]);

cv.put(ADDR, strArray[5]);

cv.put(COMP, strArray[6]);

return db.update(TABLE_NAME, cv, where, whereValues);

}

public Cursor getContants(String id){

SQLiteDatabase db=this.getReadableDatabase();

String where=ID+"=?";

String[] whereValues={id};

Cursor cursor=db.query(TABLE_NAME, null, where, whereValues, null, null, null);

return cursor;

}

}

DetailActivity.java中:

package com.example.personaladdr;

import android.app.Activity;

import android.content.Context;

import android.content.Intent;

import android.database.Cursor;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.EditText;

import android.widget.ImageButton;

import android.widget.Toast;

public class DetailActivity extends Activity{

Cursor cursor;

MyOpenHelper db;

int id=-1;

int i;

int [] textIds={

R.id.etName,R.id.etPhone,R.id.etMobile,R.id.etEmail,R.id.etPhone,R.id.etAddr,R.id.etComp

};

EditText [] textArray;

ImageButton saveButton;

//0表示查看信息,1表示添加联系人,2表示修改联系人

int status=-1;

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(R.layout.detail);

final ImageButton saveBtn=(ImageButton)findViewById(R.id.ibSave);

textArray=new EditText[textIds.length];

for(int i=0;i<textIds.length;i++){

textArray[i]=(EditText)findViewById(textIds[i]);

}

Intent intent=getIntent();

status=intent.getExtras().getInt("cmd");

switch(status){

case 0:

String contants_id=intent.getExtras().getString("id");

cursor=db.getContants(contants_id);

int count=cursor.getCount();

if(count==0){

Toast.makeText(this, "对不起,没有找到指定的联系人!", Toast.LENGTH_LONG).show();

}else {

cursor.moveToFirst();

textArray[0].setText(cursor.getString(1));

textArray[1].setText(cursor.getString(2));

textArray[2].setText(cursor.getString(3));

textArray[3].setText(cursor.getString(4));

textArray[4].setText(cursor.getString(5));

textArray[5].setText(cursor.getString(6));

textArray[6].setText(cursor.getString(7));

}

cursor.close();

db.close();

break;

case 1:

for(EditText et:textArray){

et.getEditableText().clear();

}

break;

}

saveBtn.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View arg0) {

// TODO Auto-generated method stub

String [] strArray=new String[textArray.length];

for(int i=0;i<strArray.length;i++){

strArray[i]=textArray[i].getText().toString().trim();

}

if(strArray[0].equals("")||strArray[1].equals("")){

Toast.makeText(DetailActivity.this, "对不起,您填写的姓名或电话不完整!", Toast.LENGTH_LONG).show();

}else {

switch(status){

case 0:

updateContact(strArray);

break;

case 1:

insertContant(strArray);

break;

}

}

}

});

}

public void insertContant(String [] strArray){

long count = db.insertContants(strArray);

db.close();

if(count == -1){

Toast.makeText(this, "添加联系人失败!", Toast.LENGTH_LONG).show();

}

else{

Toast.makeText(this, "添加联系人成功!", Toast.LENGTH_LONG).show();

}

}

public void updateContact(String [] strArray){

int count = db.updateContants(id+"", strArray);    //更新数据库

db.close();

if(count == 1){

Toast.makeText(this, "修改联系人成功!", Toast.LENGTH_LONG).show();

}

else{

Toast.makeText(this, "修改联系人失败!", Toast.LENGTH_LONG).show();

}

}

}

运行结果:(截图)


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


实验难度很大,本来可以运行出界面填写数据的,在对ImageButton的代码实现过程中不知道发生了什么错误,导致系统发生了崩溃。


实验评语


 


实验成绩


 


指导教师签名:              年   月   日

时间: 2024-10-10 04:05:05

实验八 SQLite数据库操作的相关文章

【Android】实验8 SQLite数据库操作2016.5.13

实验8  SQLite数据库操作 [目的] 设计一个个人通讯录,掌握Android平台下的数据库开发,该个人通讯录主要包括联系人列表和联系人详细信息等界面. [要求] 程序主界面是通讯录的目录显示手机上联系人的名称.点击联系人的姓名可以显示联系人的详细信息.在按了MEMU键之后会弹出菜单栏.单击菜单栏上的按钮可以添加联系人和删除联系人 [过程] (1)确定数据库的数据结构.本程序只要一张表,该表的内容及说明如下表所示 字段名称 数据类型 说明 字段名称 数据类型 声明 _id Integer 所

实验8 SQLite数据库操作

课程名称 基于Android平台移动互联网开发 实验日期 2016年4月15日 实验项目名称 数独游戏界面设计 实验地点 S3010 实验类型 □验证型    √设计型    □综合型 学  时 一.实验目的及要求(本实验所涉及并要求掌握的知识点) [目的] 设计一个个人通讯录,掌握Android平台下的数据库开发,该个人通讯录主要包括联系人列表和联系人详细信息等界面. [要求] 程序主界面是通讯录的目录显示手机上联系人的名称.点击联系人的姓名可以显示联系人的详细信息.在按了MEMU键之后会弹出

实验八:SQLite数据库操作

实验报告 课程名称 基于Android平台移动互联网开发 实验日期 2016年5月6日 实验项目名称 SQLite数据库操作 实验地点 S3010 实验类型 □验证型    √设计型    □综合型 学  时 4 一.实验目的及要求(本实验所涉及并要求掌握的知识点) 设计一个个人通讯录,掌握Android平台下的数据库开发,该个人通讯录主要包括联系人列表和联系人详细信息等界面. 程序主界面是通讯录的目录显示手机上联系人的名称.点击联系人的姓名可以显示联系人的详细信息.单击图标按钮可以添加联系人和

C# SQLite 数据库操作

C# SQLite 数据库操作学习 运行环境:Window7 64bit,.NetFramework4.61,C# 7.0: 编者:乌龙哈里 2017-03-19 参考: SQLite 官网 SQL As Understood By SQLite System.Data.SQLite 菜鸟教程 SQL 教程 章节: 1.下载安装 2.数据类型 3.创建数据库 4.删除数据库 5.创建表 6.删除表 7.查询表结构 8.更改表名 9.增加列(字段) 10.读取创建表的 SQL 语句 11.更改列名

iOS 中SQLite数据库操作

在iOS中实现SQLite数据库的操作:1.导入框架(libsqlite3.0.tbd) 2.导入头文件<sqlite3.h> 3.实现数据的增删改查 实现简单 SQLite数据库操作 的 demo 具体过程: 1.创建名为 SQLite_Manage 的.h .m 文件,导入头文件 <sqlite3.h> 2.数据库在一个app中只有一个,使用单例模式:(代码如下) 1 + (SQLite_Manager *)sharedManager{ 2 static SQLite_Mana

用Python进行SQLite数据库操作

用Python进行SQLite数据库操作 -----转自:http://www.cnblogs.com/yuxc/archive/2011/08/18/2143606.html 简单的介绍 SQLite数据库是一款非常小巧的嵌入式开源数据库软件,也就是说没有独立的维护进程,所有的维护都来自于程序本身.它是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了.它能够支持Windows/L

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

用Python进行SQLite数据库操作 1.导入Python SQLITE数据库模块 Python2.5之后,内置了SQLite3,成为了内置模块,这给我们省了安装的功夫,只需导入即可~ import sqlite3 2. 创建/打开数据库 在调用connect函数的时候,指定库名称,如果指定的数据库存在就直接打开这个数据库,如果不存在就新创建一个再打开. cx = sqlite3.connect("E:/test.db") 也可以创建数据库在内存中. con = sqlite3.c

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

原文出自:http://www.bcmeng.com/windows-phone-sqlite1/ 本文小梦将和大家分享WP8.1中SQlite数据库的基本操作:(最后有整个示例的源码)(希望能通过本站广告支持小梦,谢谢!) 建立数据库 增加数据 删除数据 更改数据 查询数据 (注:为了让每个操作都能及时显示在UI上,所以进行了数据绑定.数据绑定会在后面文章专门讲解,先给出数据类Note,代表一个笔记.含有Name 和content  属性.其代码如下:如果不清楚,我会在之后讲解): names

Android SQLite数据库操作示例

SQLite介绍 SQLite是一个非常流行的嵌入式数据库,它支持SQL语言,并且只利用很少的内存就有很好的性能.此外,它还是开源的,任何人都可以使用它. SQLite由以下几个组件组成:SQL编译器.内核.后端以及附件.SQLite通过利用虚拟机和虚拟数据库引擎(VDBE),使调试.修改和扩展SQLite的内核变得更加方便. SQLite支持的数据类型参考链接:http://blog.csdn.net/wzy_1988/article/details/36005947 Android在运行时(