• 实验8 SQLite数据库操作


    实验报告

    课程名称

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

    实验日期

    2016年5月6日

    实验项目名称

    SQLite数据库操作

    实验地点

    S30010

    实验类型

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

    学  时

    4

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

    【目的】

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

    【要求】

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

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

    (1)PC机

    (2)操作系统:Windows XP

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

    三、实验内容及步骤

    1、先按照实验要求,搭建好页面布局文件

    2、写数据库文件类LcAddreOpenHelper,创建好联系人数据库和表,用于存放用户输入的联系人信息,在布局页面类调用该方法,实现数据库的添加数据操作

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

    代码:

    创建数据库,添加联系人主要代码

    package com.example.lcaddressbook;

     

    import android.app.Activity;

    import android.content.ContentValues;

    import android.database.Cursor;

    import android.database.sqlite.SQLiteDatabase;

    import android.os.Bundle;

    import android.util.Log;

    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{

        EditText name,phone,mobile,email,postAddre,address,comp;

        ImageButton save,ib;

        

        

        private LcAddreOpenHelper dbHelper;

          private SQLiteDatabase db ;

          private String nameString;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

       // TODO Auto-generated method stub

       super.onCreate(savedInstanceState);

       setContentView(R.layout.detail);

       name=(EditText)findViewById(R.id.editText1);

       phone=(EditText)findViewById(R.id.editText2);

       mobile=(EditText)findViewById(R.id.editText3);

       email=(EditText)findViewById(R.id.editText4);

       postAddre=(EditText)findViewById(R.id.editText5);

       address=(EditText)findViewById(R.id.editText6);

       comp=(EditText)findViewById(R.id.editText7);

       save=(ImageButton)findViewById(R.id.imageButtonsave);

      

       ib=(ImageButton)findViewById(R.id.imageButton1);

       registerForContextMenu(name);

      

      

       save.setOnClickListener(new OnClickListener() {

         

          @Override

          public void onClick(View arg0) {

             // TODO Auto-generated method stub

             dbHelper = new LcAddreOpenHelper(DetailActivity.this, "personnal_contacts.db",

                   null, 1);

             final SQLiteDatabase db = dbHelper.getReadableDatabase();

             String nameString = name.getText().toString();

             String phoneString = phone.getText().toString();

             String mobileString = mobile.getText().toString();

             String emailString = email.getText().toString();

             String postAddreString = postAddre.getText().toString();

             String addressString = address.getText().toString();

             String compString = comp.getText().toString();

     

             Log.i("test", "11111111");

             // Cursor cursor=db.query(userTable, null, "name=?", new

             // String[]{usernameString}, null, null, null);

             Log.i("test", "22222222");

             //if (nameString.equals("") || phoneString.equals("") || mobileString.equals("") || emailString.equals("") || postAddreString.equals("") || addressString.equals("") || compString.equals("") ) {

             if (nameString.equals("") || phoneString.equals("") || mobileString.equals("") ) {

     

                Toast.makeText(DetailActivity.this, "请输入姓名/电话",

                      Toast.LENGTH_LONG).show();

             } else {

                Cursor cursor = db.rawQuery(

                      "select * from contacts where name=?",

                      new String[] { nameString }, null);

                if (cursor.getCount() > 0) {

                   Toast.makeText(DetailActivity.this, "该联系人已经存在!",

                         Toast.LENGTH_LONG).show();

     

                }

     

                else {

                   ContentValues values = new ContentValues();

                   // 开始填数据

                   values.put("NAME", name.getText().toString());

                   values.put("PHONE", phone.getText().toString());

                   values.put("MOBILE", mobile.getText().toString());

                   values.put("EMAIL", email.getText().toString());

                   values.put("POST", postAddre.getText().toString());

                   values.put("ADDRE", address.getText().toString());

                   values.put("COMP", comp.getText().toString());

                   db.insert("TABLE_NAME", null, values);

                   values.clear();

                   Toast.makeText(DetailActivity.this,

                         "添加成功" ,

                         Toast.LENGTH_LONG).show();

                  

                  

                }

                }

             }

    });

      

    }//关闭数据库

      

         @Override

         protected void onDestroy() { // TODO Auto-generated method stub

         super.onDestroy(); if (db!=null&&db.isOpen()) { db.close(); } }

    }

    显示ListView主要代码

    @Override

       protected void onCreate(Bundle savedInstanceState) {

          super.onCreate(savedInstanceState);

          setContentView(R.layout.activity_main);

         

          add = (ImageButton) findViewById(R.id.imageButton1);

          del = (ImageButton) findViewById(R.id.imageButton2);

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

     

          dbHelper= new LcAddreOpenHelper(MainActivity.this, "personnal_contacts",null, 1);

          db = dbHelper.getReadableDatabase();

          // 查询数据库,获取通讯表

          Cursor cursor = db.rawQuery("select name from contacts", null);

          inflateList(cursor);// 把通讯表显示在ListView上

      

          //chaxun = (Button) findViewById(R.id.button1)

          add.setOnClickListener(new OnClickListener() {

     

             @Override

             public void onClick(View arg0) {

                // TODO Auto-generated method stub

                Intent intent = new Intent();

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

                startActivity(intent);

             }

          });

         

       }

     

       private void inflateList(Cursor cursor) {

          int count = cursor.getCount();

          Log.i("vvvvvvvvvvvvvvvvvvvvvvvvv", "dd:" + count);

          String[] name = new String[count];

          Log.i("vvvvvvvvvvvvvvvvvvvvvvvvv", "uu:" + name.length);

          int a = 0;

          while (cursor.moveToNext()) {

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

             Log.i("vvvvvvvvvvvvvvvvvvvvvvvvv", name[a]);

             a++;

          }

     

    //System.out.printf("saddddddddddddddd");

          // 生成动态数组,加入数据

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

          for (int i = 0; i < count; i++) {

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

            

             map.put("imageView1", R.drawable.logo);// 图像资源的ID

             map.put("textView1", name[i]);

             listItem.add(map);

             // 生成适配器的Item和动态数组对应的元素

             SimpleAdapter listItemAdapter = new SimpleAdapter(

                   MainActivity.this, listItem,

                   R.layout.item,// 数据源

                   // ListItem的XML实现

                   // 动态数组与ImageItem对应的子项

                   new String[] { "ItemImage", "ItemText" },

                   // ImageItem的XML文件里面的一个ImageView,一个TextView ID

                   new int[] { R.id.imageView1, R.id.textView1}

     

             );

             // 添加并且显示

             lv.setAdapter(listItemAdapter);

          }

       }

     

    运行结果:(截图)

     

     

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

    1、本次实验用到SQLite数据库操作,相对来说难度很大,涉及创建数据库,表,然后添加数据到数据库等操作

    2、在进行读取数据库内容的实现上遇到不少困难,例如数据库语句出错,使程序出现崩溃,在页面布局编排上出现相关控件关联不对应,导致程序出错。

    实验评语

     

    实验成绩

     

    指导教师签名:              年   月   日

               
  • 相关阅读:
    android openGL ES2 一切从绘制纹理開始
    HTML5 界面元素 Canvas 參考手冊
    python进阶十_正則表達式(一)
    HDU 3016 Man Down(线段树)
    android 自己定义dialog并实现失去焦点(背景透明)的功能
    上海传智程序员携手设计狮美女雨中烧烤!!
    vim visual操作备忘
    MySQl Study学习之--MySQl二进制日志管理
    Android View measure (三) 经常用法
    Analyze提示:Value stored to &quot;***&quot;is never read
  • 原文地址:https://www.cnblogs.com/clcbk/p/5488095.html
Copyright © 2020-2023  润新知