时间:2021-07-01 10:21:17 帮助过:4人阅读
课程名称 |
基于Android平台移动互联网开发 |
实验日期 |
2015.5.12 |
||||||||||||||||||||||||||||||||
实验项目名称 |
实验8 SQLite数据库操作
|
实验地点 |
S30010 |
||||||||||||||||||||||||||||||||
实验类型 |
□验证型 √设计型 □综合型 |
学 时 |
2 |
||||||||||||||||||||||||||||||||
一、实验目的及要求(本实验所涉及并要求掌握的知识点) |
|||||||||||||||||||||||||||||||||||
【目的】 设计一个个人通讯录,掌握Android平台下的数据库开发,该个人通讯录主要包括联系人列表和联系人详细信息等界面。 【要求】 程序主界面是通讯录的目录显示手机上联系人的名称。点击联系人的姓名可以显示联系人的详细信息。在按了MEMU键之后会弹出菜单栏。单击菜单栏上的按钮可以添加联系人和删除联系人
|
|||||||||||||||||||||||||||||||||||
二、实验环境(本实验所使用的硬件设备和相关软件) |
|||||||||||||||||||||||||||||||||||
(1)PC机 (2)操作系统:Windows XP (3)软件: Eclipse, JDK1.6,Android SDK,ADT |
|||||||||||||||||||||||||||||||||||
三、实验内容及步骤 |
|||||||||||||||||||||||||||||||||||
(1)确定数据库的数据结构。本程序只要一张表,该表的内容及说明如下表所示
(2) 在res/drawable-mdpi目录下拷入程序要用的图标 1)新建工程 2)修改布局文件activity_main.xml (3)定义字符串资源string.xml
(4)开发布局文件activity_main.xml用于显示联系人列表。
(5)layout目录下新建一个detail.xml,用于显示联系人详细信息,代码参考如下:
(3)开发数据库辅助类MyOpenHelper类,新建一个MyOpenHelper.java。其中的框架代码如下
(4)接下来便进入MainActivity端的开发,实现数据库增加、删除、修改记录等操作 (5)新建一个Activity名字叫DetailActivity.java,实现联系人详细信息显示功能。
|
|||||||||||||||||||||||||||||||||||
四、实验结果(本实验源程序清单及运行结果或实验结论、实验设计图)
|
|||||||||||||||||||||||||||||||||||
代码: Main public class MainActivity extends Activity { Button btnadd,btndel; ListView listView; UserSQL sql; SQLiteDatabase database; ArrayList<HashMap<String, Object>> arrayList; String[] name=new String[100];
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = (ListView)findViewById(R.id.listView1); sql = new UserSQL(MainActivity.this, "user.db", null, 1); database= sql.getReadableDatabase(); arrayList = new ArrayList<HashMap<String, Object>>(); Cursor cursor = database.rawQuery("select * from userTable", null); cursor.moveToFirst(); if (cursor.getCount() > 0) { for (int i = 0; i < cursor.getCount(); i++) { HashMap<String, Object> hashmap = new HashMap<String, Object>(); hashmap.put("name", cursor.getString(cursor.getColumnIndex("name"))); name[i]=cursor.getString(cursor.getColumnIndex("name")); hashmap.put("phone", "["+cursor.getString(cursor.getColumnIndex("phone"))+"]"); arrayList.add(hashmap); if (i < cursor.getCount()) { cursor.moveToNext(); } } SimpleAdapter sa = new SimpleAdapter(MainActivity.this, arrayList, R.layout.list, new String[] { "name", "phone" }, new int[] { R.id.namelist, R.id.phonelist }); listView.setAdapter(sa); }
btnadd = (Button)findViewById(R.id.add); btnadd.setOnClickListener(new OnClickListener() { Intent it=new Intent(); @Override public void onClick(View v) { // TODO Auto-generated method stub it.setClass(MainActivity.this, DetailActivity.class); Bundle bd=new Bundle(); bd.putString("Name", ""); it.putExtras(bd); startActivity(it);
} }); listView.setOnItemClickListener(new OnItemClickListener() {
@Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub Intent intent=new Intent(MainActivity.this,DetailActivity.class); Bundle bd=new Bundle(); bd.putString("Name", name[position]);
intent.putExtras(bd); startActivity(intent); } }); btndel.setOnClickListener(new OnClickListener() {
@Override public void onClick(View v) { Intent it=new Intent(); // TODO Auto-generated method stub it.setClass(MainActivity.this, DeleteActivity.class); startActivity(it); } }); }
@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; }
}
Detail: public class DetailActivity extends Activity{ EditText edName,edPhone,edMobile,edEmail,edPost,edAddr,edComp; Button btnsave; UserSQL sql; SQLiteDatabase database; Bundle bundle; String select,Name,Phone,Mobile,Email,Post,Addr,Comp;; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.detail); btnsave =(Button)findViewById(R.id.save); edName=(EditText)findViewById(R.id.edName); edPhone=(EditText)findViewById(R.id.edPhone); edMobile=(EditText)findViewById(R.id.edMobile); edEmail=(EditText)findViewById(R.id.edEmail); edPost=(EditText)findViewById(R.id.edPost); edAddr=(EditText)findViewById(R.id.edAddr); edComp=(EditText)findViewById(R.id.edComp);
sql=new UserSQL(DetailActivity.this, "user.db", null, 1); database = sql.getReadableDatabase(); bundle =getIntent().getExtras(); if(bundle.getString("Name").equals("")){ select=bundle.getString("Name"); Cursor cursor=database.rawQuery("select * from userTable where name=?", new String[]{select}); cursor.moveToFirst(); edName.setText(cursor.getString(cursor.getColumnIndex("Name"))); edPhone.setText(cursor.getString(cursor.getColumnIndex("Phone"))); edMobile.setText(cursor.getString(cursor.getColumnIndex("Mobile"))); edEmail.setText(cursor.getString(cursor.getColumnIndex("Email"))); edPost.setText(cursor.getString(cursor.getColumnIndex("Post"))); edAddr.setText(cursor.getString(cursor.getColumnIndex("Addr"))); edComp.setText(cursor.getString(cursor.getColumnIndex("Comp"))); btnsave.setText("保存更新"); } btnsave.setOnClickListener(new OnClickListener() {
@Override public void onClick(View arg0) { // TODO Auto-generated method stub Name = edName.getText().toString(); Phone = edPhone.getText().toString(); Mobile = edMobile.getText().toString(); Email = edEmail.getText().toString(); Post = edPost.getText().toString(); Addr = edAddr.getText().toString(); Comp = edComp.getText().toString(); ContentValues values = new ContentValues();
if (Name.equals("")||Mobile.equals("")||Email.equals("")||Addr.equals("") ){
Toast.makeText(DetailActivity.this, "请输入联系人信息",Toast.LENGTH_LONG).show();}
else {
Cursor cursor=database.rawQuery("select * from contacts where name=? ",new String[]{Name});
if (cursor.getCount()<=0) { //如果获得的查询记录小于0
values.put("Name",edName.getText().toString()); values.put("Phone",edPhone.getText().toString()); values.put("Mobile",edMobile.getText().toString()); values.put("Email", edEmail.getText().toString()); values.put("Post",edPost.getText().toString()); values.put("Addr",edAddr.getText().toString()); values.put( "Comp",edComp.getText().toString()); database.insert("userTable", null, values);
values.clear();
Toast.makeText(DetailActivity.this, "保存成功",Toast.LENGTH_LONG).show();
}else { //如果获得的查询记录大于0,数据库中已存在该用户名
Toast.makeText(DetailActivity.this, "已存在该联系人",Toast.LENGTH_LONG).show();}
}
}
});
} } 运行截图:
|
|||||||||||||||||||||||||||||||||||
五、实验总结(对本实验结果进行分析,实验心得体会及改进意见) |
|||||||||||||||||||||||||||||||||||
实验进行的不是很顺利,中途有些功能实现不了,最终也是参考了资料跟同学的实验,可是还是实现不了。感觉自己付出的还不够多,还要再努力琢磨琢磨,更专研才行。 |
|||||||||||||||||||||||||||||||||||
实验评语 |
|
||||||||||||||||||||||||||||||||||
实验成绩 |
|
指导教师签名: 年 月 日 |
|||||||||||||||||||||||||||||||||
实验8 SQLite数据库操作
标签: