实验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的时候需要特别谨慎。 |
|||||
实验评语 |
|
||||
实验成绩 |
|
指导教师签名: 年 月 日 |