实验8 SQLite数据库操作

实验报告

课程名称

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

实验日期

2015.5.12

实验项目名称

 

实验8  SQLite数据库操作

 

实验地点

S30010

实验类型

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

学    时

2

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

【目的】

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

【要求】

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

 

 

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

(1)PC机

(2)操作系统:Windows XP

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

三、实验内容及步骤

(1)确定数据库的数据结构。本程序只要一张表,该表的内容及说明如下表所示

 

 

                                                                                                                                                     
   

字段名称

   
   

数据类型

   
   

说明

   
   

字段名称

   
   

数据类型

   
   

声明

   
   

_id

   
   

Integer

   
   

所插入记录的编号

   
   

name

   
   

varchar

   
   

联系人名称

   
   

phone

   
   

Varchar

   
   

联系人的固定电话

   
   

mobile

   
   

varchar

   
   

手机号码

   

 

   
   

Email

   
   

Varchar

   
   

联系人的邮箱的地址

   
   

post

   
   

varchar

   
   

联系人固话

   
   

addr

   
   

varchar

   
   

联系认的地址

   
   

comp

   
   

varchar

   
   

联系人所在地

   

 

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

1)新建工程

 2)修改布局文件activity_main.xml

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

                                                                     

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

    

(5)layout目录下新建一个detail.xml,用于显示联系人详细信息,代码参考如下:

    

    

    

 

 

 

 

    

    

    

(3)开发数据库辅助类MyOpenHelper类,新建一个MyOpenHelper.java。其中的框架代码如下

    

    

 

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

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

 

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

 

代码:

    Main

public class MainActivity extends Activity {

Button btnadd,btndel;

ListView listView;

UserSQL sql;

SQLiteDatabase database;

ArrayList<HashMap<String,   Object>> arrayList;

String[] name=new String[100];

 

 

    @Override

    protected void onCreate(Bundle   savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        listView = (ListView)findViewById(R.id.listView1);

        sql = new UserSQL(MainActivity.this, "user.db", null, 1);

        database= sql.getReadableDatabase();

        arrayList = new ArrayList<HashMap<String,   Object>>();

        Cursor cursor = database.rawQuery("select * from userTable", null);

        cursor.moveToFirst();

        if (cursor.getCount() > 0) {

            for (int i = 0; i < cursor.getCount(); i++) {

                HashMap<String, Object>   hashmap = new HashMap<String, Object>();

                hashmap.put("name",

                        cursor.getString(cursor.getColumnIndex("name")));

                name[i]=cursor.getString(cursor.getColumnIndex("name"));

                hashmap.put("phone",

                        "["+cursor.getString(cursor.getColumnIndex("phone"))+"]");

            arrayList.add(hashmap);

                if (i < cursor.getCount()) {

                    cursor.moveToNext();

                }

            }

            SimpleAdapter sa = new   SimpleAdapter(MainActivity.this, arrayList,

                    R.layout.list, new String[] { "name", "phone" }, new int[] {

                            R.id.namelist, R.id.phonelist });

            listView.setAdapter(sa);

        }

       

        btnadd = (Button)findViewById(R.id.add);

        btnadd.setOnClickListener(new OnClickListener() {

            Intent it=new Intent();

            @Override

            public void onClick(View v) {

                // TODO Auto-generated method stub

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

                Bundle bd=new Bundle();

                bd.putString("Name", "");

                it.putExtras(bd);

                startActivity(it);

 

            }

        });

        listView.setOnItemClickListener(new OnItemClickListener()   {

 

            @Override

            public void onItemClick(AdapterView<?>   parent, View view,

                    int position, long id) {

                // TODO Auto-generated method stub

                Intent intent=new Intent(MainActivity.this,DetailActivity.class);

                Bundle bd=new Bundle();

                bd.putString("Name", name[position]);

           

                intent.putExtras(bd);

                startActivity(intent);

            }

        });

                btndel.setOnClickListener(new OnClickListener() {

           

            @Override

            public void onClick(View v) {

                Intent it=new Intent();

                // TODO Auto-generated method stub

                it.setClass(MainActivity.this, DeleteActivity.class);

                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;

    }

 

}

 

Detail:

public class DetailActivity extends Activity{

    EditText edName,edPhone,edMobile,edEmail,edPost,edAddr,edComp;

    Button btnsave;

    UserSQL sql;

    SQLiteDatabase database;

    Bundle bundle;

    String select,Name,Phone,Mobile,Email,Post,Addr,Comp;;

    @Override

    protected void onCreate(Bundle   savedInstanceState) {

        // TODO Auto-generated method stub

        super.onCreate(savedInstanceState);

        setContentView(R.layout.detail);

        btnsave =(Button)findViewById(R.id.save);

        edName=(EditText)findViewById(R.id.edName);

        edPhone=(EditText)findViewById(R.id.edPhone);

        edMobile=(EditText)findViewById(R.id.edMobile);

        edEmail=(EditText)findViewById(R.id.edEmail);

        edPost=(EditText)findViewById(R.id.edPost);

        edAddr=(EditText)findViewById(R.id.edAddr);

        edComp=(EditText)findViewById(R.id.edComp);

       

        sql=new UserSQL(DetailActivity.this, "user.db", null, 1);

        database = sql.getReadableDatabase();

        bundle =getIntent().getExtras();

        if(bundle.getString("Name").equals("")){

            select=bundle.getString("Name");

            Cursor cursor=database.rawQuery("select * from userTable where name=?", new String[]{select});

              cursor.moveToFirst();

              edName.setText(cursor.getString(cursor.getColumnIndex("Name")));

            edPhone.setText(cursor.getString(cursor.getColumnIndex("Phone")));

            edMobile.setText(cursor.getString(cursor.getColumnIndex("Mobile")));

            edEmail.setText(cursor.getString(cursor.getColumnIndex("Email")));

            edPost.setText(cursor.getString(cursor.getColumnIndex("Post")));

            edAddr.setText(cursor.getString(cursor.getColumnIndex("Addr")));

            edComp.setText(cursor.getString(cursor.getColumnIndex("Comp")));

            btnsave.setText("保存更新");

        }

        btnsave.setOnClickListener(new OnClickListener() {

           

            @Override

            public void onClick(View arg0) {

                // TODO Auto-generated method stub

                Name = edName.getText().toString();

                Phone = edPhone.getText().toString();

                Mobile = edMobile.getText().toString();

                Email = edEmail.getText().toString();

                Post = edPost.getText().toString();

                Addr = edAddr.getText().toString();

                Comp = edComp.getText().toString();

                ContentValues values = new ContentValues();

               

               

               

                  if (Name.equals("")||Mobile.equals("")||Email.equals("")||Addr.equals("") ){  

 

                        Toast.makeText(DetailActivity.this, "请输入联系人信息",Toast.LENGTH_LONG).show();}

 

                    else {

 

                             Cursor cursor=database.rawQuery("select * from contacts where name=? ",new String[]{Name});

 

                    if (cursor.getCount()<=0) {                                //如果获得的查询记录小于0

 

                            values.put("Name",edName.getText().toString()); 

                            values.put("Phone",edPhone.getText().toString());

                            values.put("Mobile",edMobile.getText().toString());

                              values.put("Email", edEmail.getText().toString());

                            values.put("Post",edPost.getText().toString());

                            values.put("Addr",edAddr.getText().toString());

                            values.put( "Comp",edComp.getText().toString());

                           database.insert("userTable", null, values);

 

                            values.clear();

 

                            Toast.makeText(DetailActivity.this, "保存成功",Toast.LENGTH_LONG).show();

 

                        }else {                                                     //如果获得的查询记录大于0,数据库中已存在该用户名

 

                            Toast.makeText(DetailActivity.this, "已存在该联系人",Toast.LENGTH_LONG).show();}

 

                    }

 

                  }

 

              });

 

            }

    }

运行截图:

    

 

 

 

 

 

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

实验进行的不是很顺利,中途有些功能实现不了,最终也是参考了资料跟同学的实验,可是还是实现不了。感觉自己付出的还不够多,还要再努力琢磨琢磨,更专研才行。

实验评语

 

实验成绩

 

指导教师签名:              年   月   日

           

 

posted @ 2016-05-13 01:39  21梁诗琪  阅读(342)  评论(0编辑  收藏  举报