课件-btc android01第11章数据存储之数据库_第1页
课件-btc android01第11章数据存储之数据库_第2页
课件-btc android01第11章数据存储之数据库_第3页
课件-btc android01第11章数据存储之数据库_第4页
课件-btc android01第11章数据存储之数据库_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本章目了解数据库的特点和实现机掌握使用实现本地的操本章教学内数据库简数据库操数据库简数据是一个开源的嵌入式关系数据库,在2000年由D.RichardHipp发布数据库特数据库不仅提高了运行效率,而且了数据库作,其他操作可以交给进程的数据库引擎完成数据库处理机制数据数据库具有很强的移植性,可以运行在,Linux,BSD,MacOSX和一些Unix系统,比如数据库也可以工作在许多嵌入式操作系统下,例如QNX,VxWorks,PalmOS,Symbin和WindowsCE的大约有3万行标准C代码,模块化的设计使本章教学内数据库简数据库操数据数据手动建库-启动3工手动建立数据库指的是使用3工具,通过手工输入命令行成数据库的建立过3是数据库自带的一个基于命令行的SQL命令执行具,并可以显示命令执行结3工具被集成在Android系统中,用户在Linux令行界面中输入3可启动3工具,并得到工具的版本信息,如启动Linux令行界面的方法是在CMD中输入adb 命 #3Enter“.help”for 手动建库-查看已有的数据在启动3工具后,提示符从“#”变为“>”,表示命令行界面进入与数据库的交互模式,此时可以输入命令建立、正确退出3工具的方法是使用.exit命>#原则上,每个应用程序的数据库都保存在各自/data/data/<packagename>/databases #mkdirdatabases#ls–ldrwxrwxrwxrootdrwxr-xr-xsystem2009-07-1815:432009-07-1815:31手动建库-创建people在数据库中,每个数据库保存在一个独立的文件中,使用存在,3工具则自动创建新文件下面的代码将创建名为people的数据库,在文件系统中将产生名为people.db的数据库文#3people.dbEnter“.help”for>类别(storage

CAST表达式中使用的类型名UNSIGNEDBIGNATIVE

对应类nodatatypeDOUBLE

数据数据手动建库-建下面的代码在新创建的数据库中,构造了一个名为peopleinfo的表,createtablepeopleinfo(_id,name,age,height),_id;name示型,notnull表示这个属性一定要填写,不可以为空值;age表示,整数height>>createtable...>(_idintegerprimarykey...>nametextnot...>age...>height 手动建库-查看已经创建的为了确认数据表是否创建成功,可以使用.table命令,显示据库中的所有从下面的代码中可以观察到,当前数据库仅有一个名为的>> 当然,也可以使用.schema命令查看建立表时使用的SQL命令。如果[.schema示指定表的建立命令CREATETABLEpeopleinfo(_idintegerprimarykeynametextnotnull,ageinteger,height 手动建库-添加数向peopleinfo表中添加数据,使用insertintovalues命 >insertintopeopleinfo>insertintopeopleinfo>insertintopeopleinfo peopleinfo_id是自增加的主键,因此在输入null后,数据库会自动填写该123手动建库-查询数在数据添加完毕后,使用select命令,显示指定数据表中的所据信息,命令格式为[selectfrom下面的代码用来显示peopleinfo表的所有数select*select*from 数数据手动建库-设置查询结果格上面的查询结果看起来不是非常直观,可以使用mode出格式更改为“表格”方式mode命令除了支持常见的columncsv格式、html格式、insert格式、linelist格式、tabs格式和tcl格式>.mode>select*from123>数据数据手动建库-修改数更新数据可以使用update命令,命令格式为[update名set性=“新值where件更新数据后,同样使用select命令显示数据,则可以确定数据正确更下面的代码将为Lily数据中的高度值更新为>updatepeopleinfosetheight=1.88where>select*fromselect*from123>手动建库-删除数删除数据可以使用delete命令,命令格式为[deletefromwhere下面的代码将_id为3数据从表peopleinfo中删>deletefrompeopleinfowhere>select*fromselect*from12>手动建库-3工具命令列3工具还支持大量令,可以使用.help命令查询令列命说1.bail遇到错误时停止,缺省为2显示数据库名称和文件位3.dump?TABLE?将数据库以SQL文本形式导4.echo开启和关闭回5退6.explain开启或关闭适当输出模式,如果开启模式将更改为column,并自动设置手动建库-3工具命令列命说7.header(s)开启或关闭标题显8显示帮助信9.importFILE将数据从文件导入表.indices显示表中所的列.loadFILE导入扩展 设置输入格.nullvalue打印时使用STRING代替.output将输入保存到文.output将输入显示在屏幕 替换标准提示手动建库-3工具命令列命说退.read在文件中执行SQL语.schema显示表的创建语.separator更改输入和导入的分隔显示当前设置变量.tables显示符合匹配模式的表.timeout尝试打开被锁定的表MS毫.timer开启或关闭CPU计时.widthNUMNUM设置column模式的宽数据库数据库文件路设备中的数据库文件到本adbpull使用DBBrowserfor查看数数据数据代码建在代码中动态建立数据库是比较常用的方代码建publicclassStudDbHelpler OpenHelperpublicstaticfinalStringSQL_CREATE_STUDINFO="createtablestudent(idintegerkeyautoincrement,heightinteger,ageinteger,xm}publicvoidonCreate( Databasedb){}publicvoid Databasedb,intoldVersion,intnewVersion)db.execSQL("droptablestudent");}}代码建程序开发不应直接调用onCreate()和onUpgrade()函数,而应由OpenHelper类来决定何时调用这两个函OpenHelper类的getWritableDatabase()函数getReadableDatabase()函数是可以直接调用的函getWritablDaabse()函数用来建立或打开可读写的数据库对象,close(如果保存数据库文件的磁盘空间已满,调用getWritableDatabase()getReadablDaabse()函数,获得一个只读的数据库对象代码建如果程序开发不希望使用OpenHelper类,然后执行SQLprivateprivatestaticfinalStringDB_CREATE="createtable"DB_TABLE+"("+KEY_ID+"integerprimarykeyautoincrement,"KEY_NAME+"textnotnull,"+KEY_AGE+"integer,"+KEY_HEIGHT+publicvoidcreate() 数据操供的类和方法,这些类和方法更加简洁、易用insert(PeoplepeoplequeryAllDataqueryOneData(longid)根据iddeleteAllDatadeleteOneData(longid)根据idupdateOneData(longid,Peoplepeople)根据id数据操publicclassDBAdapterpubliclonginsert(Peoplepeople)publiclongdeleteAllData(){publiclongdeleteOneData(longid){}publicPeople[]queryAllData(){}publicPeople[]queryOneData(longid){publiclongupdateOneData(longid,Peoplepeople){privatePeople[]ConvertToPeople(Cursor10.ConvertToPeople(Cursorcursor换为用来数据自定义的People类对重载toString数据操publicclassPeoplepublicintID=-publicStringpublicintpublicfloatHeight;publicStringStringresult=result+="ID:"+this.ID+result+= :"+this.Name+result+= :"+this.Age+",result身高:this.Heightreturn 16.数据操Database类的公共函数insert()、delete()、update()query(),封装了执行的添加、删除、更新和查询功能的SQL命下面分别介绍如何使用Database类的公共函数,完成数据添加、删除、更新和查询等操数数据数据操insert()函数的返回值是新数据的位置,即ID值。数据数据数据操publiclonginsert(Peoplepeople)ContentValuesnewValues=newnewValues.put(KEY_NAME,people.Name);newValues.put(KEY_AGE,people.Age);newValues.put(KEY_HEIGHT,people.Height);returndb.insert(DB_TABLE,null,}数据操publicpubliclongdeleteAllData()returndb.delete(DB_TABLE,null, publiclongdeleteOneData(longid)returndb.delete(DB_TABLE,KEY_ID+"="+id, delete()函数的第1个参数是数据库的表名称,第2在第2行代码中,删除条件为nulldelete()数数据数据操后使用Database对象的update()函数,并指定数据的更新条件publiclongupdateOneData(longid,Peoplepeople){ContentValuesupdateValues=newContentValues();updateValues.put(KEY_NAME,people.Name);updateValues.put(KEY_AGE,people.Age);updateValues.put(KEY_HEIGHT,people.Height);returndb.update(DB_TABLE,updateValues,KEY_ID+"="+id,}在代码的第7行中,update()函数的第1个参数表示数据表的名称,第2update()数据操Cursor数据数据数据操Cursor类的方法和说函说数据操从Cursor中提取数据可以参考ConvertToPeople()函数的实现方在提取Cursor数据中的数据前,推荐测试Cursor中的数据数量,免在数据获取中产生异常,例如代码的第3行到第5Cursorget<Type>()函数,函数的输入值为属性的序号,为了获取属性的序号,可以使用getColumnIde()函数获取指定属性的序号数据操intresultCounts=if(resultCounts==0||return People[]peoples=newfor(inti=0;i<resultCounts;peoples[i]=newpeoples[i].ID=peoples[i].Name=peoples[i].Age=peoples[i].Height= return16.数据操要进行数据查询就需要调用Database类的query()函数,CursorCursor.Database.query(Stringtable,String[]columns,selection,String[]selectionArgs,StringgroupBy,Stringhaving,Stringquery()函数的参数说位类型+名说1String2String[]3String4String[]5String6String7String数据操根据idpublicpub

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论