实验8 SQLite数据库操作

实验报告

课程名称

实验8  SQLite数据库操作

实验日期

2016.5.6

实验项目名称

多媒体应用开发

实验地点

S30010

实验类型

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

学  时

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

设计一个个人通讯录,掌握Android平台下的数据库开发,该个人通讯录主要包括联系人列表和联系人详细信息等界面。程序主界面是通讯录的目录显示手机上联系人的名称。点击联系人的姓名可以显示联系人的详细信息。在按了MEMU键之后会弹出菜单栏。单击菜单栏上的按钮可以添加联系人和删除联系人

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

(1)PC机

(2)操作系统:Windows XP

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

三、实验内容及步骤

(1)确定数据库的数据结构。

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

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

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

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

代码:

MainActivity代码:

public class MainActivity extends Activity {

    private ListView lv;

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

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

        lv.setAdapter(new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_single_choice));

        lv.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

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

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

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

            map.put("DetailName", R.id.editText1);  

            map.put("DetailMobile", R.id.editText2);

            listItem.add(map);    

        }

        SimpleAdapter simpleAdapter=new SimpleAdapter(MainActivity.this, listItem, R.layout.item,

        new String[]{"DetailName","DetailMobile"} , new int[]{R.id.editText1,R.id.editText2});

        lv.setAdapter(simpleAdapter);   //为ListView绑定适配器

        lv.setOnItemClickListener(new OnItemClickListener() {

 

            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {

                Intent intent=new Intent();

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

                startActivity(intent);

                finish();

            }

        });

    }

    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

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

        return super.onCreateOptionsMenu(menu);

    }

    public boolean onOptionsItemSelected(MenuItem item){

        item.setChecked(true);

        switch (item.getItemId()) {

        case R.id.menu1:

            item.setChecked(true);

            Intent intent=new Intent();

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

            startActivity(intent);

            MainActivity.this.finish();

            break;

        case R.id.menu2:

            item.setChecked(true);

            break;

        default:

            break;

        }

        return super.onOptionsItemSelected(item);

    }

}

   

DetailActivity代码:

public class DetailActivity extends Activity{

     private EditText name;

     private EditText mobil;

     private EditText email;

     private EditText address;

     private EditText company;

     private MyOpenHelper helper;

     private Button savebtn;

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.tvdetail);

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

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

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

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

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

        savebtn=(Button)findViewById(R.id.button1);

        savebtn.setOnClickListener(new OnClickListener() {

            public void onClick(View arg0) {

                helper=new MyOpenHelper(DetailActivity.this, "contacts.db",null, 1);

                   SQLiteDatabase db = helper.getReadableDatabase();     //获得可读的数据库

                   ContentValues values = new ContentValues();

                   String name2=name.getTag().toString();

                   String mobile2=mobil.getTag().toString();

                   String email2=email.getTag().toString();

                   String addr2=address.getTag().toString();

                   String comp2=company.getTag().toString();

        

                   if (name2.equals("")||mobile2.equals("")||email2.equals("")||addr2.equals("") ){  

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

                    else {

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

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

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

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

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

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

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

                            values.clear();

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

                        }else {                                                 

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

                    }         }

        });

    }

    protected void onDestroy() {

        super.onDestroy();}

}

 

MyOpenHelper代码:

 

public class MyOpenHelper extends SQLiteOpenHelper{

    public static final String CREATE__CONTACTS="create table contacts(id integer primary key autoincrement,name,mobile,email,address)";

    private Context myContext;

 

    public MyOpenHelper(Context context, String name, CursorFactory factory,

            int version) {

        super(context, name, factory, version);

        myContext=context;

        }

    @Override

    public void onCreate(SQLiteDatabase db) {

        db.execSQL(CREATE__CONTACTS);

        Toast.makeText(myContext, "成功", Toast.LENGTH_LONG).show();

    }

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

        // TODO Auto-generated method stub}

}

 

 

运行结果:(截图)

 

 

 

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

本次试验并未能全部完成,Layout中的布局能实现,在增加联系人的功能中,方法和代码都基本理解并写出,但在运行时候出现崩溃现象,仍在进一步调试中。

实验评语

 

实验成绩

 

指导教师签名:              年   月   日

           
原文地址:https://www.cnblogs.com/jingwenyim/p/5487830.html