zoukankan      html  css  js  c++  java
  • 实验八 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的代码实现过程中不知道发生了什么错误,导致系统发生了崩溃。

    实验评语

     

    实验成绩

     

    指导教师签名:              年   月   日

  • 相关阅读:
    关于组件(包括控件)设计的一些建议
    请教:不能运行asp程序了??
    (ASP.NET)几个概念与区别
    突然想起99年的那次离别
    什么是计划
    服务器控件开发基础应用设计期Attribute
    收藏些API资料
    今天的感觉呐喊
    重新启用本blog
    关于Clone
  • 原文地址:https://www.cnblogs.com/summer--liumengyun/p/5487740.html
Copyright © 2011-2022 走看看