版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
事在人为11/26实验8SQLite数据库与ContentProvider实验目的:掌握SQLite数据库的建立和操作方法。理解ContentProvider的用途和原理。掌握ContentProvider的创建和使用方法。实验内容:使用Android代码的方式建立SQLite数据库,数据库名称为test.db,并建立staff数据表,表内的属性值如下表所示:属性数据类型说明_idinteger主键nametext姓名sextext性别departmenttext所在部门salaryfloat工资在完成建立数据库的工作后,编程实现基本的数据库操作功能,包括数据的添加、删除和更新,并尝试将下表中的数据添加到staff表中。_idnamesexdepartmentsalary1Tommale计算机学院54002Einsteinmale计算机学院48003Lilyfemale数理学院50004Warnermale5Napoleonmale实验截图:如图1、2、3、4、5、6、7、8、9、10所示:程序主界面:图1添加一条数据:图2查询所有数据:图3查询一条数据:图4修改一条数据:图5查询一条数据:图6删除一条数据:图7查询所有数据:图8核心代码块:activity_main_activity207.xml:<RelativeLayoutxmlns:android="/apk/res/android"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity207"><TableLayoutandroid:id="@+id/mainLayout"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignLeft="@+id/nameTextView"android:layout_alignTop="@+id/nameTextView"><TableRowandroid:id="@+id/tableRow1"android:layout_width="wrap_content"android:layout_height="wrap_content"><TextViewandroid:id="@+id/nameTextView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="姓名:"/><EditTextandroid:id="@+id/nameEditText"android:layout_width="wrap_content"android:layout_height="wrap_content"/></TableRow><TableRowandroid:id="@+id/tableRow2"android:layout_width="wrap_content"android:layout_height="wrap_content"><TextViewandroid:id="@+id/sexTextView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="性别:"/><EditTextandroid:id="@+id/sexEditText"android:layout_width="wrap_content"android:layout_height="wrap_content"/></TableRow><TableRowandroid:id="@+id/tableRow3"android:layout_width="wrap_content"android:layout_height="wrap_content"><TextViewandroid:id="@+id/departmentTextView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="所在部门:"/><EditTextandroid:id="@+id/departmentEditText"android:layout_width="wrap_content"android:layout_height="wrap_content"/></TableRow><TableRowandroid:id="@+id/tableRow4"android:layout_width="wrap_content"android:layout_height="wrap_content"><TextViewandroid:id="@+id/salaryTextView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="工资:"/><EditTextandroid:id="@+id/salaryEditText"android:layout_width="wrap_content"android:layout_height="wrap_content"/></TableRow><TableRowandroid:id="@+id/tableRow5"android:layout_width="wrap_content"android:layout_height="wrap_content"><Buttonandroid:id="@+id/addButton"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="添加数据"/><Buttonandroid:id="@+id/updateButton"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="修改数据"/></TableRow><TableRowandroid:id="@+id/tableRow6"android:layout_width="wrap_content"android:layout_height="wrap_content"><Buttonandroid:id="@+id/selectallButton"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="查询所有"/><Buttonandroid:id="@+id/deleteButton"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="删除数据"/></TableRow><TableRowandroid:id="@+id/tableRow7"android:layout_width="wrap_content"android:layout_height="wrap_content"><TextViewandroid:id="@+id/idTextView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="请输入ID号:"/><EditTextandroid:id="@+id/idEditText"android:layout_width="wrap_content"android:layout_height="wrap_content"/><Buttonandroid:id="@+id/selectButton"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="查询"/></TableRow><TextViewandroid:id="@+id/displayTextView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:gravity="bottom"android:text="显示相关信息。。。。"/></TableLayout></RelativeLayout>People207.java:packagecqut.hjr;publicclassPeople207{ publicintID=-1; publicStringName; publicStringSex; publicStringDepartment; publicfloatSalary; @Override publicStringtoString(){ Stringresult=""; result+="ID:"+this.ID+","; result+="姓名:"+this.Name+","; result+="性别:"+this.Sex+","; result+="所在部门:"+this.Department+","; result+="工资:"+this.Salary+","; returnresult; }}DBAdapter207.java:packagecqut.hjr;importandroid.content.ContentValues;importandroid.content.Context;importandroid.database.Cursor;importandroid.database.sqlite.SQLiteDatabase;importandroid.database.sqlite.SQLiteException;importandroid.database.sqlite.SQLiteOpenHelper;importandroid.database.sqlite.SQLiteDatabase.CursorFactory;publicclassDBAdapter207{ privatestaticfinalStringDB_NAME="test.db"; privatestaticfinalStringDB_TABLE="staff"; privatestaticfinalintDB_VERSION=1; publicstaticfinalStringKEY_ID="_id"; publicstaticfinalStringKEY_NAME="name"; publicstaticfinalStringKEY_SEX="sex"; publicstaticfinalStringKEY_DEPARTMENT="department"; publicstaticfinalStringKEY_SALARY="salary"; privatestaticfinalCursorFactoryMODE_PRIVATE=null; privateSQLiteDatabasedb; privatefinalContextcontext; privateDBOpenHelperdbOpenHelper; //构造函数(将上下文对象传入) publicDBAdapter207(Context_context){ context=_context; } /**关闭数据库**/ publicvoidclose(){ if(db!=null){ db.close(); db=null; } } /**打开数据库**/ publicvoidopen()throwsSQLiteException{ dbOpenHelper=newDBOpenHelper(context,DB_NAME,null,DB_VERSION); try{ db=dbOpenHelper.getWritableDatabase(); } catch(SQLiteExceptionex){ db=dbOpenHelper.getReadableDatabase(); } } /**插入一条数据**/ publiclonginsert(People207people){ ContentValuesnewValues=newContentValues(); newValues.put(KEY_NAME,people.Name); newValues.put(KEY_SEX,people.Sex); newValues.put(KEY_DEPARTMENT,people.Department); newValues.put(KEY_SALARY,people.Salary); returndb.insert(DB_TABLE,null,newValues); } /**查询所有数据**/ publicPeople207[]queryAllData(){ Cursorresults=db.query(DB_TABLE,newString[]{KEY_ID,KEY_NAME,KEY_SEX,KEY_DEPARTMENT,KEY_SALARY}, null,null,null,null,null); returnConvertToPeople(results); } /**查询一条数据**/ publicPeople207[]queryOneData(longid){ Cursorresults=db.query(DB_TABLE,newString[]{KEY_ID,KEY_NAME,KEY_SEX,KEY_DEPARTMENT,KEY_SALARY}, KEY_ID+"="+id,null,null,null,null); returnConvertToPeople(results); } /**将查询到的数据(游标指针)转换成Pepole数组对象**/ privatePeople207[]ConvertToPeople(Cursorcursor){ intresultCounts=cursor.getCount(); if(resultCounts==0||!cursor.moveToFirst()){ returnnull; } People207[]peoples=newPeople207[resultCounts]; for(inti=0;i<resultCounts;i++){ peoples[i]=newPeople207(); peoples[i].ID=cursor.getInt(0); peoples[i].Name=cursor.getString(cursor.getColumnIndex(KEY_NAME)); peoples[i].Sex=cursor.getString(cursor.getColumnIndex(KEY_SEX)); peoples[i].Department=cursor.getString(cursor.getColumnIndex(KEY_DEPARTMENT)); peoples[i].Salary=cursor.getFloat(cursor.getColumnIndex(KEY_SALARY)); cursor.moveToNext(); } returnpeoples; } /**删除所有数据**/ publiclongdeleteAllData(){ returndb.delete(DB_TABLE,null,null); } /**删除一条数据**/ publiclongdeleteOneData(longid){ returndb.delete(DB_TABLE,KEY_ID+"="+id,null); } /**更新一条数据**/ publiclongupdateOneData(longid,People207people){ ContentValuesupdateValues=newContentValues(); updateValues.put(KEY_NAME,people.Name); updateValues.put(KEY_SEX,people.Sex); updateValues.put(KEY_DEPARTMENT,people.Department); updateValues.put(KEY_SALARY,people.Salary); returndb.update(DB_TABLE,updateValues,KEY_ID+"="+id,null); } /**静态Helper类,用于建立、更新和打开数据库*/ privatestaticclassDBOpenHelperextendsSQLiteOpenHelper{ publicDBOpenHelper(Contextcontext,Stringname,CursorFactoryfactory,intversion){ super(context,name,factory,version); }// privatestaticfinalStringDB_CREATE="createtable"+// DB_TABLE+"("+KEY_ID+"integerprimarykeyautoincrement,"+// KEY_NAME+"textnotnull,"+KEY_AGE+"integer,"+KEY_HEIGHT+"float);"; privatestaticfinalStringDB_CREATE="createtable"+ DB_TABLE+"("+KEY_ID+"integerprimarykeyautoincrement,"+ KEY_NAME+"textnotnull,"+KEY_SEX+"textnotnull,"+KEY_DEPARTMENT+"textnotnull,"+KEY_SALARY+"float);"; @Override publicvoidonCreate(SQLiteDatabase_db){ _db.execSQL(DB_CREATE); } @Override publicvoidonUpgrade(SQLiteDatabase_db,int_oldVersion,int_newVersion){ _db.execSQL("DROPTABLEIFEXISTS"+DB_TABLE); onCreate(_db); } }}MainActivity207.java:packagecqut.hjr;importandroid.os.Bundle;importandroid.app.Activity;importandroid.view.Menu;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;importandroid.widget.EditText;importandroid.widget.TextView;importandroid.widget.Toast;publicclassMainActivity207extendsActivity{ privateDBAdapter207dbAdepter; //实例化控件对象 privateEditTextnameText; privateEditTextsexText; privateEditTextdepartmentText; privateEditTextsalaryText; privateEditTextidText; privateTextViewdisplayTextView; @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_activity207); /* *获得各个控件对象 */ nameText=(EditText)findViewById(R.EditText); sexText=(EditText)findViewById(R.id.sexEditText); departmentText=(EditText)findViewById(R.id.departmentEditText); salaryText=(EditText)findViewById(R.id.salaryEditText); idText=(EditText)findViewById(R.id.idEditText); displayTextView=(TextView)findViewById(R.id.displayTextView); ButtonaddButton=(Button)findViewById(R.id.addButton);ButtonupdateButton=(Button)findViewById(R.id.updateButton);ButtonselectAllButton=(Button)findViewById(R.id.selectallButton);ButtondeleteAllButton=(Button)findViewById(R.id.deleteButton);ButtonselectButton=(Button)findViewById(R.id.selectButton);//设置按钮对象链接对应的监听器对象addButton.setOnClickListener(addButtonListener);updateButton.setOnClickListener(updateButtonListener);selectAllButton.setOnClickListener(selectAllButtonListener);deleteAllButton.setOnClickListener(deleteButtonListener);//deleteAllButton.setOnClickListener(deleteAllButtonListener);selectButton.setOnClickListener(selectButtonListener);dbAdepter=newDBAdapter207(this);dbAdepter.open(); } /* *添加按钮监听器 */ OnClickListeneraddButtonListener=newOnClickListener(){ @Override publicvoidonClick(Viewv){ People207people=newPeople207(); people.Name=nameText.getText().toString(); people.Sex=sexText.getText().toString(); people.Department=departmentText.getText().toString(); people.Salary=Float.parseFloat(salaryText.getText().toString()); longcolunm=dbAdepter.insert(people); if(colunm==-1){ displayTextView.setText("添加过程错误!"); Toast.makeText(MainActivity207.this,"添加过程错误",1).show(); }else{ displayTextView.setText("成功添加数据,ID:"+String.valueOf(colunm)); Toast.makeText(MainActivity207.this,"恭喜您,添加数据成功!",1).show(); } } };/**查询(所有)按钮监听器*/OnClickListenerselectAllButtonListener=newOnClickListener(){ @Override publicvoidonClick(Viewv){ People207[]peoples=dbAdepter.queryAllData(); if(peoples==null){ displayTextView.setText("Sorry!数据库中没有数据"); return; } displayTextView.setText("数据库:"); Stringmsg=""; for(inti=0;i<peoples.length;i++){ msg+=peoples[i].toString()+"\n"; } displayTextView.setText(msg); }};/**删除(所有)按钮监听器*/OnClickListenerdeleteAllButtonListener=newOnClickListener(){ @Override publicvoidonClick(Viewv){ dbAdepter.deleteAllData(); Stringmsg="数据全部删除"; displayTextView.setText(msg); Toast.makeText(MainActivity207.this,"删除成功!",1).show(); } };/**查询(一条数据)按钮监听器*/OnClickListenerselectButtonListener=newOnClickListener(){ @Override publicvoidonClick(Viewv){ intid=Integer.parseInt(idText.getText().toString()); People207[]peoples=dbAdepter.queryOneData(id); if(peoples==null){ displayTextView.setText("数据库中没有ID为"+String.valueOf(id)+"的数据"); retur
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年中国纸帽数据监测研究报告
- 2025至2030年中国宠物挂饰数据监测研究报告
- 2025至2030年中国全自动饭柜数据监测研究报告
- 2025至2030年中国PDA点菜系统数据监测研究报告
- 2025至2031年中国谷物清理机行业投资前景及策略咨询研究报告
- 2025年度电商直播内容制作合同4篇
- 2025年度出租车司机休息休假聘用合同4篇
- 二零二五年度存量房交易合同与物业管理交接服务协议4篇
- 二零二五年度美容院美容产品绿色生产合同3篇
- 2025年缪含离婚协议书及离婚后财产监管协议4篇
- 2024-2025学年北京石景山区九年级初三(上)期末语文试卷(含答案)
- 第一章 整式的乘除 单元测试(含答案) 2024-2025学年北师大版数学七年级下册
- 春节联欢晚会节目单课件模板
- 中国高血压防治指南(2024年修订版)
- 糖尿病眼病患者血糖管理
- 抖音音乐推广代运营合同样本
- 教育促进会会长总结发言稿
- 北师大版(2024新版)七年级上册数学第四章《基本平面图形》测试卷(含答案解析)
- 心理调适教案调整心态积极应对挑战
- 喷漆外包服务合同范本
- JT-T-390-1999突起路标行业标准
评论
0/150
提交评论