• 实验8 SQLite数据库操作


    实验报告

    课程名称

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

    实验日期

    4月29日

    实验项目名称

    开发一个Android应用程序

    实验地点

    S3010

    实验类型

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

    学  时

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

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

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

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

    (1)PC机

    (2)操作系统:Windows XP

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

    三、实验内容及步骤

    一、

    1)新建工程

    2)修改布局文件activity_main.xml

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

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

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

     

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

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

    代码:

    MainActivity关键代码

    package com.example.contactsch;

    import java.util.ArrayList;

    import java.util.HashMap;

    import java.util.Map;

    import android.app.Activity;

    import android.app.LauncherActivity.ListItem;

    import android.content.Intent;

    import android.database.Cursor;

    import android.database.sqlite.SQLiteDatabase;

    import android.net.LocalSocketAddress.Namespace;

    import android.os.Bundle;

    import android.support.v4.widget.CursorAdapter;

    import android.support.v4.widget.SimpleCursorAdapter;

    import android.util.Log;

    import android.view.Menu;

    import android.view.MenuInflater;

    import android.view.MenuItem;

    import android.view.View;

    import android.view.View.OnClickListener;

    import android.widget.AdapterView;

    import android.widget.AdapterView.OnItemClickListener;

    import android.widget.Button;

    import android.widget.ListView;

    import android.widget.SimpleAdapter;

    import android.widget.TextView;

    public class MainActivity extends Activity {

       private ListView lView;

       private MyOpenHelper dbHelper;

       private Button delb,addb;

       SQLiteDatabase db;

       @Override

       protected void onCreate(Bundle savedInstanceState) {

           super.onCreate(savedInstanceState);

           setContentView(R.layout.activity_main);

           delb=(Button)findViewById(R.id.del);

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

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

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

           dbHelper=new MyOpenHelper(MainActivity.this, "personal_contacts.db", null, 1);

           db=dbHelper.getReadableDatabase();

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

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

           inflateList(cursor);

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

           addb.setOnClickListener(new OnClickListener() {

             

              @Override

              public void onClick(View arg0) {

                  // TODO Auto-generated method stub

                  Bundle bundle=new Bundle();

                  bundle.putString("name", "");

                  Intent intent=new Intent();

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

                  intent.putExtras(bundle);

                  startActivity(intent);

              }

           });

           lView.setOnItemClickListener(new OnItemClickListener() {

              @Override

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

                     long arg3) {

                  // TODO Auto-generated method stub

                  TextView ser=(TextView)arg1.findViewById(R.id.tView1);

                  String se=ser.getText().toString();

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

                  Bundle bundle=new Bundle();

                  bundle.putString("name", se);

                  intent.putExtras(bundle);

                  startActivity(intent);

                 

              }

           });

       }

       private void inflateList(Cursor cursor) {

           // TODO Auto-generated method stub

           int c=cursor.getCount();

           String[] nameS=new String[c];

           String[] phoneS=new String[c];

           int co=0;

           while(cursor.moveToNext()){

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

              phoneS[co]=cursor.getString(cursor.getColumnIndex("phone"));

              co++;

           }

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

           for (int i = 1; i <= c; i++) {

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

              map.put("ItemTitle", nameS[i-1]);

              map.put("ItemText", phoneS[i-1]);

              listItem.add(map);

                 

           }

          

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

           if (cursor.getCount()!=0) {

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

              SimpleAdapter sAdapter=new SimpleAdapter(MainActivity.this, listItem, R.layout.link,

                     new String[]{"ItemTitle","ItemText"} , new int[]{R.id.tView1,R.id.tView2});

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

              lView.setAdapter(sAdapter);

           }

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

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

       }

       @Override

       public boolean onCreateOptionsMenu(Menu menu) {

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

           MenuInflater inflater=new MenuInflater(this);

           inflater.inflate(R.menu.main, menu);

           return super.onCreateOptionsMenu(menu);

       }

    }

    detail_main关键代码

    package com.example.contactsch;

    import android.annotation.SuppressLint;

    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.Button;

    import android.widget.EditText;

    import android.widget.ImageButton;

    import android.widget.Toast;

    public class detail_main extends Activity{

       private MyOpenHelper dbHelper;

       private EditText ename,ephone,emobile,eemail,epost,eaddr,ecomp;

       private ImageButton bc;

       @SuppressLint("NewApi") @Override

      

       protected void onCreate(Bundle savedInstanceState) {

           // TODO Auto-generated method stub

           super.onCreate(savedInstanceState);

           setContentView(R.layout.detail);

           ename=(EditText)findViewById(R.id.etname);

           ephone=(EditText)findViewById(R.id.etphone);

           emobile=(EditText)findViewById(R.id.etmobile);

           eemail=(EditText)findViewById(R.id.etemail);

           epost=(EditText)findViewById(R.id.etpost);

           eaddr=(EditText)findViewById(R.id.etaddr);

           ecomp=(EditText)findViewById(R.id.etcomp);

           bc=(ImageButton)findViewById(R.id.bcButton1);

           Bundle bundle=new Bundle();

           bundle=getIntent().getExtras();

           String nString=bundle.getString("name");

           ename.setText(nString);

           dbHelper=new MyOpenHelper(detail_main.this, "personal_contacts.db", null, 1);

           final SQLiteDatabase db=dbHelper.getReadableDatabase();

           Cursor cursorg=db.rawQuery("select * from contacts where name=?",new String[] {nString}, null);

           if (cursorg.getCount()>0) {

              cursorg.moveToFirst();

              ephone.setText(cursorg.getString(cursorg.getColumnIndex("phone")));

              emobile.setText(cursorg.getString(cursorg.getColumnIndex("mobile")));

              eemail.setText(cursorg.getString(cursorg.getColumnIndex("email")));

              epost.setText(cursorg.getString(cursorg.getColumnIndex("post")));

              eaddr.setText(cursorg.getString(cursorg.getColumnIndex("addr")));

              ecomp.setText(cursorg.getString(cursorg.getColumnIndex("comp")));

           }

           bc.setOnClickListener(new OnClickListener() {

             

              @SuppressLint("NewApi") @Override

              public void onClick(View arg0) {

                  // TODO Auto-generated method stub

                  String sname=ename.getText().toString();

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

                  if (cursor.getCount() > 0) {

                     Toast.makeText(detail_main.this, "名片已存在",

                            Toast.LENGTH_LONG).show();

                  }else {

                     ContentValues values = new ContentValues();

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

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

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

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

                     values.put("post", epost.getText().toString());

                     values.put("addr", eaddr.getText().toString());

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

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

                     values.clear();

                     Toast.makeText(detail_main.this,"名片存入成功" ,Toast.LENGTH_LONG).show();

                  }

              }

           });

       }

    }

    MyOpenHelper关键代码

    package com.example.contactsch;

    import android.content.Context;

    import android.database.sqlite.SQLiteDatabase;

    import android.database.sqlite.SQLiteDatabase.CursorFactory;

    import android.database.sqlite.SQLiteOpenHelper;

    import android.util.Log;

    public class MyOpenHelper extends SQLiteOpenHelper{

       public static final String CREAT_USER="create table contacts(id integer primary key autoincrement," +

              "name," +

              "phone," +

              "mobile," +

              "email," +

              "post," +

              "addr," +

              "comp)";

       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, name, factory, version);

           // TODO Auto-generated constructor stub

       }

       @Override

       public void onCreate(SQLiteDatabase db) {

           // TODO Auto-generated method stub

           db.execSQL(CREAT_USER);

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

       }

       @Override

       public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {

           // TODO Auto-generated method stub

          

       }

    }

    运行结果:(截图)

    主界面

     

    点击添加增加添加信息

     

    点击listview中的222

     

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

        作业量有点大,实现的功能很多,还有删除不知如何能够实现,逻辑思路也没有,对于listview的语句还不是很熟悉,特别是点击事件返回的4个数值不知是什么意思,加大了难度.对于那种返回参数太多的语句会很乱,也不知什么意思.希望老师以后再文档中注释.

    实验评语

     

    实验成绩

     

    指导教师签名:              年   月   日

               
  • 相关阅读:
    Spell checker
    Power Network
    ACM Computer Factory
    Asteroids
    Golang: 并发抓取网页内容
    Golang: 抓取网页内容
    Golang: 读取文件并统计内容
    Golang: 接收命令行输入
    React: 有状态组件生成真实DOM结点
    React: 无状态组件生成真实DOM结点
  • 原文地址:https://www.cnblogs.com/lijiahui/p/5487938.html
Copyright © 2020-2023  润新知