实验报告

课程名称

基于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. python输出一个数的每一位_Python练习实例88 | 读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*。...
  2. 动态嵌套游标解决方案
  3. try catch finally语句详解
  4. nlp-tutorial代码注释1-2,词向量、Word2Vec、Skip-gram简述
  5. 机器学习的行业与场景总结
  6. 财富杂志推荐的75本必读书
  7. No Sequelize instance passed
  8. INSERT IGNORE INTO 与 INSERT INTO
  9. 阅读笔记:利用Python进行数据分析第2版——第8章 数据规整:聚合、合并和重塑
  10. vue H5移动端项目 真机测试配置
  11. Java生成“年月日“+流水号
  12. 名帖301 刘墉 行书《自作诗卷》
  13. PS学习-锐化和修饰照片(一)--高反差锐化并提升立体感
  14. Ubuntu 硬盘”分区“图文教程
  15. pythontuple数据类型_阿博的Python之路-详解Tuple数据类型
  16. 50个极好的bootstrap模板下载地址
  17. pandas中DataFrame的.ix不能用怎么办
  18. JAVA判断上传文件后缀名是否符合规范MultipartFile
  19. 关于对政务云密码支撑方案及应用方案设计的学习及思考
  20. 基于SSM的驾校预约管理系统

热门文章

  1. onItemLongClick+onCreateContextMenu实现长按ListItem弹出不同菜单
  2. ADSL接入路由,电脑共享上网
  3. Elasticsearch 8.x 正式发布!
  4. 用 Java 爬小姐姐图片,直接拿来用!这个厉害了。。。
  5. 你不知道的redis——主从复制,因为该命令redis作者曾摊上事
  6. Cglib 如何实现多重代理?
  7. 广东电信 5.31 因「运维误操作」导致断网:流量突降 1.3 TB
  8. 5G 时代,一加的机会在哪里?
  9. AS技巧合集「常用技巧篇」
  10. 记账本小程序7天开发记录(第三天)