• 实验8 SQLite数据库操作


    课程名称

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

    实验日期

    2016-5-12

    实验项目名称

    SQLite数据库操作

    实验地点

    S3010

    实验类型

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

    学  时

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

    【目的】

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

    【要求】

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

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

    (1)PC机

    (2)操作系统:Windows XP

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

    三、实验内容及步骤

    【过程】

    1.导入工程

     

    2. 修改布局文件activity_main.xml

    3. 开发MainActivity.java用于显示联系人列表

    4. 按munu键弹出菜单栏

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

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

    7. 新建一个Activity名字叫information.java,实现联系人详细信息显示功能

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

    代码:

    一、

    1、修改布局文件activity_main.xml

     <TextView

            android:id="@+id/textView1"

            android:layout_width="fill_parent"

            android:layout_height="wrap_content"

            android:layout_alignParentLeft="true"

            android:layout_alignParentTop="true"       

            android:text="联系人列表"

            android:textSize="40px"/>

     

        <ListView

            android:id="@+id/listView1"

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:layout_alignParentLeft="true"

            android:layout_below="@+id/textView1"

            >

    </ListView>

    2、开发MainActivity.java用于显示联系人列表

      public class MainActivity extends Activity {

        private ListView listView;

        private MyOpenHelper dbHelper;

        SQLiteDatabase db; 

        @Override

        protected void onCreate(Bundle savedInstanceState) {   

            super.onCreate(savedInstanceState);

            setContentView(R.layout.activity_main);

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

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

            db=dbHelper.getReadableDatabase();

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

            inflaterList(cursor);                      

        }

        private void inflaterList(Cursor cursor) {

            // TODO Auto-generated method stub

            int count=cursor.getCount();

            String[] names=new String[count];

            String[] phone=new String[count];      

            int a=0;

            while (cursor.moveToNext()) {

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

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

                a++;

                Log.i("main", "jjjjjjjjjjj");                                  

            }

            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("name1", names[i]);

                map.put("phone1", phone[i]);

                listitem.add(map);

                Log.i("main", "ffffffffffffffffff");

            }

            SimpleAdapter adapter=new SimpleAdapter(MainActivity.this,listitem, R.layout.line, new String[]{"name1","phone1"}, new int[]{R.id.name1,R.id.phone1});

            listView.setAdapter(adapter);

            Log.i("main", "aaaaaaaaaaaaaaaaaaaaaaaa");

           

        }

    3、按munu键弹出菜单栏

    public boolean onCreateOptionsMenu(Menu menu) {    

            MenuInflater inflater = new MenuInflater(this);

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

            return super.onCreateOptionsMenu(menu);

        }

        @Override

        public boolean onOptionsItemSelected(MenuItem item) {

            // TODO Auto-generated method stub

            switch (item.getItemId()) {

            case R.id.item1:

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

                startActivity(intent);

                break;

            case R.id.item2:

                Intent intent1=new Intent(MainActivity.this,Information.class);

                startActivity(intent1);

                break;

     

            default:

                break;

            }

            return super.onOptionsItemSelected(item);

        }

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

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

    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);    

        }

        @Override

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

            // TODO Auto-generated method stub     

        }

    }

    6. 新建一个Activity名字叫information.java,实现联系人详细信息显示功能

    public class Information extends Activity{

        private ImageButton imageButton;

        private MyOpenHelper dbHelper;

        private TextView name,phone,mobile,email,post,addr,comp;

        private EditText etName,etPhone,etMobile,etEmail,etPost,etAddr,etComp;

     

        @Override

        protected void onCreate(Bundle savedInstanceState) {

            // TODO Auto-generated method stub

            super.onCreate(savedInstanceState);

            setContentView(R.layout.informatin);

            name=(TextView)findViewById(R.id.tvname);

            phone=(TextView)findViewById(R.id.tvPhone);

            mobile=(TextView)findViewById(R.id.tvmobile);

            email=(TextView)findViewById(R.id.tvEmail);

            post=(TextView)findViewById(R.id.tvpost);

            addr=(TextView)findViewById(R.id.tvAddr);

            comp=(TextView)findViewById(R.id.tvComp);

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

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

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

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

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

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

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

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

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

            final SQLiteDatabase db=dbHelper.getReadableDatabase();

            imageButton.setOnClickListener(new OnClickListener() {

               

                @SuppressLint("NewApi") @Override

                public void onClick(View arg0) {

                    // TODO Auto-generated method stub

                    Log.i("text","22222222222222222222222222222");

                    String stringName=etName.getText().toString();

                    Log.i("text","3333333333333333333");

                        Log.i("text","111111111111111111111111111111");

                        ContentValues values = new ContentValues();

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

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

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

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

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

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

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

                        Log.i("text","44444444444444444444444444");                

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

                        Log.i("text","5555555555555");             

                        values.clear();

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

                    }

            });

        }

    运行结果:(截图)

    一、按menu键后的主页面

     

    二、按添加按钮进入信息详情页,并且保存联系人信息

     

    三、再次进入主页面

     

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

    这次的实验实现起来感觉比较困难,不能很好地处理运用数据库。在本次实验过程中,基本上实现添加联系人并且把联系人的名字和座机显示在listview上,能够将联系人的相关信息保存至数据库中,但是未能实现对联系人的操作。实验过程中,逐渐学会用log.i方法找到问题,一步步地解决问题。由于控件很多,在给控件命名id的时候需要特别谨慎。

    实验评语

     

    实验成绩

     

    指导教师签名:              年   月   日

  • 相关阅读:
    Vue+Koa2移动电商实战 (一)前端环境搭建
    Hibernate之二级缓存
    Hibernate之QBC检索和本地SQL检索
    Hibernate之HQL介绍
    Hibernate 检索策略
    Hibernate4.x之映射关系--继承映射
    Hibernate4.x之映射关系--多对多
    Hibernate4.x之映射关系--一对一映射
    Hibernate4.x之映射关系--双向1-n
    Hibernate4.x之映射关系--单向一对多
  • 原文地址:https://www.cnblogs.com/Dawn----123/p/5487872.html
Copyright © 2020-2023  润新知