实验报告

课程名称

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

实验日期

2016年5月6日

实验项目名称

SQLite数据库操作

实验地点

S3010

实验类型

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

学  时

4

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

  1. 设计一个个人通讯录,掌握Android平台下的数据库开发,该个人通讯录主要包括联系人列表和联系人详细信息等界面。
  2. 程序主界面是通讯录的目录显示手机上联系人的名称。点击联系人的姓名可以显示联系人的详细信息。单击图标按钮可以添加联系人和删除联系人。

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

(1)PC机

(2)操作系统:Windows XP

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

三、实验内容及步骤

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

(2)  新建工程,修改布局文件,定义字符串资源。

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

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

(5)  开发数据库辅助类MyOpenHelper类

(6)  DetailActivity端开发实现数据库增加、删除、修改记录等操作

(7)  新建Activity名为DetailActivity.java,实现联系人详细信息显示功能。

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

代码:

MyOpenHelper
public class MyOpenHelper extends SQLiteOpenHelper{
public static final String CREAT_CONTACTS="create table contactTable(id integer primary key autoincrement,name,email,comp,post,addr,phone,mobile)";
//                                    +"id integer primary key autoincrement,"
//                                    +"name,pwd");
private Context mycContext;public MyOpenHelper(Context context, String name, CursorFactory factory,int version) {super(context, name, factory, version);// TODO Auto-generated constructor stubmycContext=context;}@Overridepublic void onCreate(SQLiteDatabase arg0) {// TODO Auto-generated method stub
        arg0.execSQL(CREAT_CONTACTS);Toast.makeText(mycContext, "数据库创建成功", Toast.LENGTH_LONG).show();}@Overridepublic void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {// TODO Auto-generated method stub
        }public Cursor query(String string, String[] args) {// TODO Auto-generated method stubSQLiteDatabase db=this.getReadableDatabase();Cursor cursor=db.rawQuery(string, args);return cursor;}}

DetailActivity

public class DetailActivity extends Activity {MyOpenHelper dbhelper;EditText editname;EditText editemail;EditText editcomp;EditText editpost;EditText editaddr;EditText editphone;Bundle bundle;EditText editmobile;ImageButton imbutsave;private String selectname;protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.detail);editname=(EditText)findViewById(R.id.editname);editemail=(EditText)findViewById(R.id.editemail);editcomp=(EditText)findViewById(R.id.editcomp);editpost=(EditText)findViewById(R.id.editpost);editaddr=(EditText)findViewById(R.id.editaddr);editphone=(EditText)findViewById(R.id.editphone);editmobile=(EditText)findViewById(R.id.editmobile);imbutsave=(ImageButton)findViewById(R.id.imageButtonsave);bundle=getIntent().getExtras();dbhelper=new MyOpenHelper(DetailActivity.this, "mycontacts.db",null,1);final SQLiteDatabase db=dbhelper.getReadableDatabase();if(!bundle.getString("name").equals("")){selectname=bundle.getString("name");Cursor cursor = db.rawQuery("select * from contactTable where name=?",new String[]{selectname});cursor.moveToFirst();editname.setText(cursor.getString(cursor.getColumnIndex("name")));editemail.setText(cursor.getString(cursor.getColumnIndex("email")));editcomp.setText(cursor.getString(cursor.getColumnIndex("comp")));editpost.setText(cursor.getString(cursor.getColumnIndex("post")));editaddr.setText(cursor.getString(cursor.getColumnIndex("addr")));editphone.setText(cursor.getString(cursor.getColumnIndex("phone")));editmobile.setText(cursor.getString(cursor.getColumnIndex("mobile")));}registerForContextMenu(editname);imbutsave.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubdbhelper=new MyOpenHelper(DetailActivity.this, "mycontacts.db",null,1);SQLiteDatabase db=dbhelper.getReadableDatabase();ContentValues values = new ContentValues();String nameString=editname.getText().toString();String emailString=editemail.getText().toString();String compString=editcomp.getText().toString();String postString=editpost.getText().toString();String addrString=editaddr.getText().toString();String phoneString=editphone.getText().toString();String mobileString=editmobile.getText().toString();if (!nameString.equals("")){Cursor cursor=db.rawQuery("select * from contactTable where name=?", new String[]{nameString});cursor.moveToFirst();values.put("name",nameString);values.put("email", emailString);values.put("comp", compString);values.put("post", postString);values.put("addr", addrString);values.put("phone", phoneString);values.put("mobile", mobileString);    if (cursor.getCount()<=0) {db.insert("contactTable", null, values);values.clear();Toast.makeText(DetailActivity.this, "联系人"+nameString+"成功保存",Toast.LENGTH_LONG).show();db.delete("contactTable", "name=?", new String[]{selectname});Intent it=new Intent();it.setClass(DetailActivity.this, MainActivity.class);startActivity(it);finish();}else if (cursor.getCount()==1 && cursor.getString(cursor.getColumnIndex("name")).equals(selectname)) {db.update("contactTable", values, "name=?", new String[]{selectname});values.clear();Toast.makeText(DetailActivity.this, "联系人"+nameString+"成功更新",Toast.LENGTH_LONG).show();Intent it=new Intent();it.setClass(DetailActivity.this, MainActivity.class);startActivity(it);finish();}else {Toast.makeText(DetailActivity.this, "姓名已存在",Toast.LENGTH_LONG).show();}}else {Toast.makeText(DetailActivity.this, "姓名不能为空",Toast.LENGTH_LONG).show();}                    }                });}
}

main

public class MainActivity extends Activity {final int rowcount=0;ListView lv;ImageButton ibutadd;SQLiteDatabase db;MyOpenHelper dbHelper;String[] name=new String[50];@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ibutadd=(ImageButton)findViewById(R.id.imageButton1);lv=(ListView)findViewById(R.id.listView1);dbHelper = new MyOpenHelper(MainActivity.this, "mycontacts.db",null, 1);final SQLiteDatabase db = dbHelper.getReadableDatabase();Cursor cursor = db.rawQuery("select name from contactTable", null);ibutadd.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent it=new Intent();Bundle bundle=new Bundle();bundle.putString("name", "");it.putExtras(bundle);it.setClass(MainActivity.this, DetailActivity.class);startActivity(it);}});final ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>();/*在数组中存放数据*/cursor.moveToFirst();for(int i=0;i<cursor.getCount();i++)                      {  HashMap<String, Object> map = new HashMap<String, Object>();  map.put("name",cursor.getString(cursor.getColumnIndex("name")));  name[i]=cursor.getString(cursor.getColumnIndex("name"));listItem.add(map);            if(i==cursor.getCount()){break;}cursor.moveToNext();} SimpleAdapter mSimpleAdapter = new SimpleAdapter(this,listItem,//需要绑定的数据                R.layout.line,//每一行的布局//动态数组中的数据源的键对应到定义布局的View中new String[] {"name"},   new int[] {R.id.tv1});lv.setAdapter(mSimpleAdapter);//为ListView绑定适配器lv.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {// TODO Auto-generated method stubIntent it=new Intent(MainActivity.this, DetailActivity.class);Bundle bundle=new Bundle();bundle.putString("name", name[arg2]);it.putExtras(bundle);startActivity(it);}});}
@Overridepublic 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;}}

运行结果:(截图)

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

经过本次的实验,发现很多问题,对数据库进行增、删、查、改的操作不了解,通过参考资料和老师上课讲解梳理了部分知识难点,艰难完成。还需多练编写android程序。

实验评语

 

实验成绩

 

指导教师签名:              年   月   日

转载于:https://www.cnblogs.com/baoan/p/5487971.html

实验八:SQLite数据库操作相关推荐

  1. 实验8 SQLite数据库操作

    实验报告 课程名称 基于Android平台移动互联网开发 实验日期 2016/5/6 实验项目名称 SQLite数据库操作 实验地点 综合实验室 实验类型 □验证型    √设计型    □综合型 学 ...

  2. C# SQLite 数据库操作语句与文件视图管理器

    //sqlite数据库视图管理器 SQLiteSpy是一款专业的SQLite数据库管理,主要用于读取sqlite数据库,建立新的SQL查询,视图,复制和删除表.编辑单元格,以及查看索引,触发器和排序规 ...

  3. SQLite数据库操作实践

    SQLite数据库操作实践 SQLite存储类型 null       - 空值  integer - 有符号整数,自增列定义 id integer primary key autoincrement ...

  4. 数据存储之 SQLite 数据库操作(三)

    上一讲中我们讲到了SQLite数据库的操作方法 [数据存储之SQLite数据库操作(二)],我们主要是以SQL语句对数据库进行增删改查,这一讲我们来学习一下 Android 建议的对数据库的操作方法 ...

  5. 数据存储之 SQLite 数据库操作(二)

    上一讲我们讲解了SQLite数据库的创建[数据存储之 SQLite 数据库操作(一)],还有更新的操作,这一讲我们来讲解一下数据库的增删改查,这边的程序是对上一个程序进行修改,建议结合上一讲内容进行学 ...

  6. Qt下Sqlite数据库操作

    Sqlite数据库作为Qt项目开发中经常使用的一个轻量级的数据库,可以说是兼容性相对比较好的数据库之一(Sqlite就像Qt的亲儿子,如同微软兼容Access数据库一样).关于Sqlite和Qt的千丝 ...

  7. java sqlite 操作_Java SQLite 数据库操作

    Java SQLite 数据库操作 1.[代码][Java]代码 package UI; import java.sql.Connection; import java.sql.DriverManag ...

  8. Android sqlite数据库操作通用框架AHibernate(一)-CRUD示例和使用步骤

    AHibernate简介 一句话描述,使用AHibernate框架进行sqlite数据库操作您将从重复性劳动中解脱出来. (一)支持功能: 1.自动建表,支持属性来自继承类:可根据注解自动完成建表,并 ...

  9. SQLite数据库操作+事务处理

    SQLite数据库操作 SQLite数据库介绍 Android系统中集成的轻量级的数据库 特点: 轻量级 是以单个文件的形式进行存取 跨平台 支持多个操作系统 零配置 无需安装, 直接使用 嵌入式 内 ...

  10. C# SQLite 数据库操作实例2

    运行环境:Window7 64bit,.NetFramework4.61,C# 7.0 参考: SQLite 官网 SQL As Understood By SQLite System.Data.SQ ...

最新文章

  1. android sdk国内快速更新下载
  2. DataBinding的双向绑定实现原理
  3. DataReader终结篇
  4. Mybatis中出现java.sql.SQLException: 无效的列类型: 1111
  5. Tabio – 轻松,高效的管理 Chrome 标签页
  6. 软件测试面试题(每日一刷)
  7. 移动应用开发专业简介(610212)
  8. FreeNAS 安装与用户指导页
  9. C++STL优先队列详解及练习
  10. 简单的方法完成项目上传到github
  11. STM32学习(1)-资料查找,STM32简介,STM32选型以及芯片内部结构图
  12. 西普CTF训练(programe部分分析)
  13. Python单例模式
  14. 听完周杰伦的《Mojito》,我不禁想用分子料理做几颗
  15. 电脑如何恢复数据?电脑文件清空了如何恢复数据?
  16. Au:录音中常见问题修复
  17. 浅谈:网站SEO优化导航做法分析及技巧
  18. LSB水印嵌入与提取-灰度图像_Python Version
  19. 存储测试报告模板1.0
  20. 纯css模拟液晶式显示数字时间

热门文章

  1. hdu 5175 Misaki's Kiss again
  2. 《统一沟通-微软-实战》-7-配置-2-呼叫寄存
  3. WF4.0 基础篇 (二十五)(补充) ActivityFunc 与 InvokeFunc
  4. 企业网络管理员如何有效封杀QQ
  5. 横空出世,比Visio快10倍的画图工具来了
  6. 程序员除了写代码,还应重视哪些方面?
  7. 强烈推荐几个BAT大佬技术公众号~值得学习!
  8. CodeReview 常见代码问题( 下 )
  9. 这年头还有人吹财富自由。。
  10. 终于,J 神还是加入了 Google!