代码改变世界

实验8 SQLite数据库操作

2016-05-12 23:38  27唐凤婵  阅读(320)  评论(0编辑  收藏  举报

课程名称

基于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的时候需要特别谨慎。

实验评语

 

实验成绩

 

指导教师签名:              年   月   日