实验八:SQLite数据库操作

实验报告


课程名称


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


实验日期


2016年5月6日


实验项目名称


SQLite数据库操作


实验地点


S3010


实验类型


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


学  时


4


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

  1. 设计一个个人通讯录,掌握Android平台下的数据库开发,该个人通讯录主要包括联系人列表和联系人详细信息等界面。
  2. 程序主界面是通讯录的目录显示手机上联系人的名称。点击联系人的姓名可以显示联系人的详细信息。单击图标按钮可以添加联系人和删除联系人。

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


(1)PC机

(2)操作系统:Windows XP

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


三、实验内容及步骤


(1)  确定数据库的数据结构。

(2)  新建工程,修改布局文件,定义字符串资源。

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

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

(5)  开发数据库辅助类MyOpenHelper类

(6)  DetailActivity端开发实现数据库增加、删除、修改记录等操作

(7)  新建Activity名为DetailActivity.java,实现联系人详细信息显示功能。


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


代码:

MyOpenHelper

public class MyOpenHelper extends SQLiteOpenHelper{
public static final String CREAT_CONTACTS="create table contactTable(id integer primary key autoincrement,name,email,comp,post,addr,phone,mobile)";
//                                    +"id integer primary key autoincrement,"
//                                    +"name,pwd");
private Context mycContext;
    public MyOpenHelper(Context context, String name, CursorFactory factory,
            int version) {
        super(context, name, factory, version);
        // TODO Auto-generated constructor stub
        mycContext=context;
    }
    @Override
    public void onCreate(SQLiteDatabase arg0) {
        // TODO Auto-generated method stub
        arg0.execSQL(CREAT_CONTACTS);
        Toast.makeText(mycContext, "数据库创建成功", Toast.LENGTH_LONG).show();

    }

    @Override
    public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
        // TODO Auto-generated method stub

    }

    public Cursor query(String string, String[] args) {
        // TODO Auto-generated method stub
        SQLiteDatabase db=this.getReadableDatabase();
        Cursor cursor=db.rawQuery(string, args);
        return cursor;
    }

}

DetailActivity

public class DetailActivity extends Activity {

    MyOpenHelper dbhelper;
    EditText editname;
    EditText editemail;
    EditText editcomp;
    EditText editpost;
    EditText editaddr;
    EditText editphone;
    Bundle bundle;
    EditText editmobile;
    ImageButton imbutsave;
    private String selectname;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.detail);
        editname=(EditText)findViewById(R.id.editname);
        editemail=(EditText)findViewById(R.id.editemail);
        editcomp=(EditText)findViewById(R.id.editcomp);
        editpost=(EditText)findViewById(R.id.editpost);
        editaddr=(EditText)findViewById(R.id.editaddr);
        editphone=(EditText)findViewById(R.id.editphone);
        editmobile=(EditText)findViewById(R.id.editmobile);
        imbutsave=(ImageButton)findViewById(R.id.imageButtonsave);
        bundle=getIntent().getExtras();
        dbhelper=new MyOpenHelper(DetailActivity.this, "mycontacts.db",null,1);
        final SQLiteDatabase db=dbhelper.getReadableDatabase();
        if(!bundle.getString("name").equals(""))
        {
            selectname=bundle.getString("name");
            Cursor cursor = db.rawQuery(
                "select * from contactTable where name=?",new String[]{selectname});
        cursor.moveToFirst();
        editname.setText(cursor.getString(cursor.getColumnIndex("name")));
        editemail.setText(cursor.getString(cursor.getColumnIndex("email")));
        editcomp.setText(cursor.getString(cursor.getColumnIndex("comp")));
        editpost.setText(cursor.getString(cursor.getColumnIndex("post")));
        editaddr.setText(cursor.getString(cursor.getColumnIndex("addr")));
        editphone.setText(cursor.getString(cursor.getColumnIndex("phone")));
        editmobile.setText(cursor.getString(cursor.getColumnIndex("mobile")));
        }
        registerForContextMenu(editname);
        imbutsave.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                dbhelper=new MyOpenHelper(DetailActivity.this, "mycontacts.db",null,1);
                SQLiteDatabase db=dbhelper.getReadableDatabase();
                ContentValues values = new ContentValues();
                String nameString=editname.getText().toString();
                String emailString=editemail.getText().toString();
                String compString=editcomp.getText().toString();
                String postString=editpost.getText().toString();
                String addrString=editaddr.getText().toString();
                String phoneString=editphone.getText().toString();
                String mobileString=editmobile.getText().toString();
                if (!nameString.equals(""))
                {
                    Cursor cursor=db.rawQuery("select * from contactTable where name=?", new String[]{nameString});
                    cursor.moveToFirst();
                    values.put("name",nameString);
                    values.put("email", emailString);
                    values.put("comp", compString);
                    values.put("post", postString);
                    values.put("addr", addrString);
                    values.put("phone", phoneString);
                    values.put("mobile", mobileString);
                    if (cursor.getCount()<=0) {
                        db.insert("contactTable", null, values);
                        values.clear();
                        Toast.makeText(DetailActivity.this, "联系人"+nameString+"成功保存",
                                Toast.LENGTH_LONG).show();
                        db.delete("contactTable", "name=?", new String[]{selectname});
                        Intent it=new Intent();
                        it.setClass(DetailActivity.this, MainActivity.class);
                        startActivity(it);
                        finish();
                    }else if (cursor.getCount()==1 && cursor.getString(cursor.getColumnIndex("name")).equals(selectname)) {
                        db.update("contactTable", values, "name=?", new String[]{selectname});
                        values.clear();
                        Toast.makeText(DetailActivity.this, "联系人"+nameString+"成功更新",
                                Toast.LENGTH_LONG).show();
                        Intent it=new Intent();
                        it.setClass(DetailActivity.this, MainActivity.class);
                        startActivity(it);
                        finish();
                    }else {
                        Toast.makeText(DetailActivity.this, "姓名已存在",
                                Toast.LENGTH_LONG).show();
                    }
                    }else {
                        Toast.makeText(DetailActivity.this, "姓名不能为空",
                                Toast.LENGTH_LONG).show();
                    }
                }
        });
    }
}

main

public class MainActivity extends Activity {
    final int rowcount=0;
    ListView lv;
    ImageButton ibutadd;
    SQLiteDatabase db;
    MyOpenHelper dbHelper;
    String[] name=new String[50];
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ibutadd=(ImageButton)findViewById(R.id.imageButton1);
        lv=(ListView)findViewById(R.id.listView1);
        dbHelper = new MyOpenHelper(MainActivity.this, "mycontacts.db",
                null, 1);
        final SQLiteDatabase db = dbHelper.getReadableDatabase();
        Cursor cursor = db.rawQuery(
                "select name from contactTable", null);
        ibutadd.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent it=new Intent();
                Bundle bundle=new Bundle();
                bundle.putString("name", "");
                it.putExtras(bundle);
                it.setClass(MainActivity.this, DetailActivity.class);
                startActivity(it);
            }
        });
    final ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>();/*在数组中存放数据*/
    cursor.moveToFirst();
    for(int i=0;i<cursor.getCount();i++)
            {
                HashMap<String, Object> map = new HashMap<String, Object>();
                map.put("name",cursor.getString(cursor.getColumnIndex("name")));
                name[i]=cursor.getString(cursor.getColumnIndex("name"));
                listItem.add(map);
                if(i==cursor.getCount()){
                    break;
                }
                cursor.moveToNext();
            } 

    SimpleAdapter mSimpleAdapter = new SimpleAdapter(this,listItem,//需要绑定的数据
    R.layout.line,//每一行的布局
    //动态数组中的数据源的键对应到定义布局的View中
    new String[] {"name"},
    new int[] {R.id.tv1});

    lv.setAdapter(mSimpleAdapter);//为ListView绑定适配器
    lv.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            // TODO Auto-generated method stub
            Intent it=new Intent(MainActivity.this, DetailActivity.class);
            Bundle bundle=new Bundle();
            bundle.putString("name", name[arg2]);
            it.putExtras(bundle);
            startActivity(it);
        }
    });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

运行结果:(截图)


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


经过本次的实验,发现很多问题,对数据库进行增、删、查、改的操作不了解,通过参考资料和老师上课讲解梳理了部分知识难点,艰难完成。还需多练编写android程序。


实验评语


 


实验成绩


 


指导教师签名:              年   月   日

时间: 2024-08-09 11:06:37

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

实验八 SQLite数据库操作

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

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

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

实验8 SQLite数据库操作

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

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在运行时(