《浅析室内设计的重要元素室内绿化.doc》由会员分享,可在线阅读,更多相关《浅析室内设计的重要元素室内绿化.doc(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、XXXXXX本科生毕业设计(论文)学院(系): 专 业: 学 生: 指导教师: 完成日期 年 月XXXXXX本科生毕业设计(论文)安卓环境下多线程文件下载器Multi-threaded Flie Downloaderunder Andoid Environment总 计:毕业设计(论文) 25页表 格: 2个图 片: 4个安卓环境下多线程文件下载器XXXXXX 本 科 毕 业 设 计(论文)安卓环境下多线程文件下载器Multi-threaded File Downloaderunder Android Environment学 院(系): 专 业: 学 生 姓 名: 学 号: 指导教师(职称)
2、: 评 阅 教 师: 完 成 日 期: 安卓环境下多线程文件下载器软件工程 XXX摘 要 随着中国移动互联网3G时代的到来, 很多抢眼的词汇也不断冲击着人们的眼球。智能手机硬件配置不断提升,运行在手机平台的应用程序层出不穷,人们可以通过电脑安装手机程序,还可以通过3G网络下载手机应用程序,基于Android手机平台的多线程文件下载器将成为网民通过3G网络获取和共享资源的一个重要渠道,多线程文件下载器实现用户在线下载网络资源,保存下载资源的断点数据,为用户提供了友好的手机平台资源下载功能。它改变传统的手机下载资源的方式,突破了传统下载工具的枷锁,实现快速方便的下载资源,节省网络流量。该程序跨平台
3、性强,运行速度快,用户可以快速下载应用、apk程序等资源、高效执行下载操作,满足用户需求达到了预期效果。关键词 下载器;多线程;断点;跨平台Multi-threaded Flie Downloaderunder Andoid EnvironmentSoftware Engineering MajorXXXXAbstract: With the coming of 3G era of China mobile internet, lots of eye-catching vocabularies keep striking peoples mind. With the continuous en
4、hancement in smart phone configurations, apps for smart phone spring out like mushrooms. People can not only install smart phone apps via computer, but also download smart phone apps via 3G network. The multi-thread downloading, which is based on Android platform, will become an important channel fo
5、r users to obtain and share resources via 3G network. Multi-thread downloading enables offline resources download, save breakpoint data, and offers user-friendly mobile resources download platform. It changes the traditional mobile download method, breaks the constraints of conventional download too
6、ls, realizes fast and convenient resources download, and saves network flows. This application could be applied to various platforms, and runs at very high speed. As a result, users can download apps, apk and other resources quickly, operate efficiently, and meet their expectations.Key words: Downlo
7、ader; Multithreaded; Breakpoint; Cross-platform如果你周边有同学苦逼于毕设的话,果断推荐这个公众号给他吧!分享朋友圈,截图发给这个公众号(ifreeTeam),可以在我的万套毕业设计源码中选择你合适的一套哦。嘻嘻!目 录1 背景与意义11.1 设计背景11.2 设计意义12 需求分析22.1 调查研究22.2 组织结构图22.3 设计方法22.3.1 如何搭建Android开发平台32.3.2 如何用实现多线程下载及断点数据保存42.4 操作流程52.5 环境配置52.5.1 硬件条件52.5.2 软件条件53 系统设计63.1 系统划分63.1.
8、1 多线程下载设计63.1.2 断点续传下载设计:63.1.3 界面设计73.1.4 数据库设计83.1.5 物理结构表104 编码与实现114.1 HTTP通信114.1.1 功能描述114.1.2 下载界面114.1.3 核心代码124.2 创建数据库124.2.1 功能描述124.3 多线程下载134.3.1 功能描述134.3.2 界面设计134.4 断点数据保存144.4.1 功能描述144.4.2 界面设计145 系统测试与运行155.1 软件测试的目的155.2 测试环境155.3 集成测试166 总结与展望16结束语17参考文献18附录19致谢251 背景与意义1.1 设计背景
9、3G牌照在国内发放后,3G、Android、iPhone、Google、苹果、手机软件、移动开发等词越来越充斥于耳。随着3G网络的大规模建设和智能手机的迅速普及,移动互联网时代已经微笑着迎面而来。以创新的搜索引擎技术而一跃成为互联网巨头的Google,无线搜索成为Google进军移动互联网的一块基石。早在2007年,Google中国就把无线搜索当作战略重心,不断推出新产品,尝试通过户外媒体推广移动搜索产品,并积极与运营商、终端厂商、浏览器厂商等达成战略合作。Android操作系统是Google最具杀伤力的武器之一。苹果以其天才的创新,使得iPhone在全球迅速拥有了数百万忠实“粉丝”,而And
10、roid作为第一个完整、开放、免费的手机平台,使开发者在为其开发程序时拥有更大的自由。与Windows Mobile、Symbian等厂商不同的是,Android操作系统免费向开发人员提供,这样可节省近三成成本,得到了众多厂商与开发者的拥护。最早进入Android市场的宏达电已经陆续在一年内推出了G1、Magic、Hero、Tattoo等4款手机,三星也在近期推出了Galaxyi7500,连摩托罗拉也推出了新款Android手机Clip,中国移动也以Android为基础开发了Ophone平台。这些发展证明Android已经成为智能手机市场的重要发展趋势。如今3G时代已经来临,随着智能手机硬件配
11、置不断提升,运行在手机平台的应用程序层出不穷,企业应用、游戏、金融、炒股等软件给人们带来极大方便,随时随地掏出手机就可以查找自己所需要的资源,人们可以通过电脑和手机来下载安装手机应用程序。为了实现在手机上直接通过3G网络下载网络资源,我们设计开发了“多线程文件下载器”帮助用户在线下载网络资源,如果出现网络异常,我们可以保存下载资源的断点数据,在下次网络连接时可继续下载。节省了手机流量,为用户提供了友好的手机平台资源下载功能,给用户的下载带来了更大的方便。1.2 设计意义随着移动网络的发展,手机上网人数日益增多,人们已经习惯通过手机网络的方式在网络上进行即时信息的交流和接受服务,着智能手机平台应
12、用平台软件层出不穷,为了方便用户直接通过手机下载手机应用,本人设计了一款“Android环境下多线程文件下载器”能帮助您更快速、更便捷地获取资源,更多地享受Android手机的便捷与乐趣。Android环境下多线程文件下载器特点:打破手机网络限制,断点续传和多线程下载,大大节省流量并且提高手机上网下载速度。2 需求分析2.1 调查研究开发Android手机多线程下载器硬件上讲,现在的智能手机速度现在已经不是问题,大容量高速度的手机存储卡十分普遍,同时无限网络的速度普遍可以达到100M,这些为电子商务的运行打下坚实的基础。从软件的角度上讲,android操作系统具有非常强大的功能,可以java程
13、序人员在android操作系统的手机上开发各种软件。同时,开发手机客户端的工具eclipse也相当成熟。有了这些技术的支持,成功开发一个移动手机多线程下载器没有任何技术风险。本系统拟采用的技术如下:采用面向对象的设计方法进行方案设计,选择Droid-Draw+JDK1.6+SDK2.3.1+eclipese作为开发工具。采用关系型数据库技术。DBMS采用Sqlite作为数据库平台。它是一款免费软件。它的网络承载比较少。它经过很好的优化(Highly Optimized)。它为各种不同的资料格式提供有弹性的扩展介面 (ODBC)。它轻便易学较好学,且操作简单,而且你负担得起的客户支持费用。选择用
14、无线网或手机接入点进行验证调试等。选择用手机模拟器和手机进行调试显示。方便、快捷,不用在客户端安装其他软件。 本系统采用的技术己经非常成熟,并且应用于实际项目当中,取得了非常好的效果。同样,由于Android系统是一款完全免费的系统,所有软件都选用免费的正版软件,所有使用的技术资料都要妥善进行保管,用合同来确定违约责任,对用户的信息要保密。2.2 组织结构图图21组织结构图2.3 设计方法本软件采用Android智能手机平台,结合Java语言,利用Android SDK开发,采用HTTP通信协议向服务器发送get请求,服务器接受后同样使用HTTP返回客户端请求数据。本软件数据库采用手机平台内置
15、的轻量级数据库SQLite,该数据库具有使用轻便、灵活、跨平台性好,执行速度快的特点,在接口、性能支持上比其它大型PC级数据库达到更好的运行效果。基于对该软件的分析,开发本应用需要解决两个主要问题。2.3.1 如何搭建Android开发平台Android本身就是一个操作系统,只是这个操作系统基于Linux内核Android是一个由30多家科技公司和手机公司组成的“开放手机联盟”共同研发的,而且完全免费开源,这将大大降低新型手机设备的研发成本。Android平台是免费、开源的,而且Google通过与运营商、设备制造商等机构形成的战略联盟,希望共同制定标准使Android成为一个开发式的生态系统。
16、应用程序的权限由开发人员决定,如需要使用限制级的手机API,只需要在自己的应用程序中配置一下即可,完全是DIY,这也在某些程度上降低了Android程序的开发成本。Android上所有应用程序都是可替换和扩展的,即使是拨号、Home这样的核心组件也一样。同时Android应用程序之间的无障碍沟通,应用程序之间的通信一直令人头疼,而在Android平台上无疑是一种享受,在Android平台上应用程序之间至少有4种沟通方式,但它们托起了整个Android的应用程序框架。Android平台是拥抱Web的,如果想在Android应用程序中嵌入HTML、HTML5、JavaScript,那么真的是再容易
17、不过了,基于WebKit内核的WebView组件会完成一切。更值得一提的是,JavaScript还可以和Java无缝的整合在一起。在加上Android个性的充分体现,Android提供了众多体验个性功能的组件,如:Widget、Shortcut、LiveWallPapers无一不尽显手机的华丽与时尚。舒适的开发环境。Android的主流开发环境是Eclipse+ADT+Android SDK,他们可以非常容易的集成在一起,而且在开发环境中运行程序要比Symbian这样的传统手机操作系统更快,调试更方便。Android的系统架构从高到低分为四个层次:应用层、应用框架层、系统运行库层和Linux内
18、核层。应用层:该层由运行在Dalvik虚拟机(为Android专门设计的基于寄存器的Java虚拟机,运行Java程序的速度更快)上的应用程序(主要是Java语言编写)组成。例如,日历、地图、浏览器、联系人管理都属于应用层上的程序。应用框架层:该层主要由View、通知管理器(NoteficationManager)、活动管理器(ActivityManager)等由开发人员直接调用的组件组成。系统运行库:Java本身是不能直接访问硬件的。要想让Java访问硬件,必须使用NDK才可以,NDK是有一些由C+语言编写的库,这些程序也是该层的主要组成部分,该层主要包括C语言标准库、多媒体库、OpenGLE
19、S、SQLite、Webkit、Dalvik虚拟机等,也就是说,该层是对应用框架层提供支持的层。Linux内核层:该层主要包括驱动、内存管理、进程管理、网络协议等组件。目前Android版本基于Linux 2.6内核3。此程序运行在Android2.1以上智能手机上,首先配置好Java开发环境,下载Eclipse开发工具,Eclipse版本在3.7.1以上。开发Android至少需要如下工具和开发包:JDK1.6以上、Eclipse、Android SDK、ADT(Android Development Tools,开发Android程序的Eclipse插件)。第一步:先安装Android S
20、DK,Android SDK在线安装,在安装之前要保证网络的正常连接。第二步:安装Ecllipse插件ADT,可以直接在Eclipse中直接安装ADT。单击【ok】按钮关闭对话框,回到【Avaliable Software】标签页,选中刚才增加的地址,然后单击右侧的【install】按钮开始安装ADT插件。在弹出的安装对话框中选中Android DDMS和Android Developments Tools两项,单击【Next】按钮进入下一个安装界面,选中接受协议复选框,最后单击【finish】按钮开始安装。当成功安装ADT后,重启Eclipse即可使用ADT来开发Android程序。安装完A
21、DT后,还需要设置一下Android SDK的安装目录。打击【Window】【Preference】菜单项。在弹出的对话框中选中左侧的【Android】节点。在右侧的【SDK Location】文本框中输入Android SDK的安装目录即可。测试ADT是否安装成功。我们可以新建一个工程来测试一下ADT是否安装成功。单击【new】【AndroidProject】菜单项(如果没有该菜单项,可以单击【new】【Other】菜单项,在弹出对话框的树中寻找【Android】节点,显示建立Anroid工程的对话框,点击【finish】按钮创建Android工程。在运行firstandroid工程之前还需
22、要建立一个AVD设备。一个AVD设备对应一个Android版本的模拟器实例。由于firstandroid使用的是Android2.1,因此需要建立一个Android版本的模拟器实例。由于firstandroid使用的是Android2.1,因此需要需要建立一个支持Android2.1的AVD设备。建立完AVD设备后,找到firstandroid工程,单击右键菜单的【Run As】【Android Appllication】菜单项,运行firstand。这时ADT会自动启动模拟器,并在模拟器上运行firstandroid,在模拟器成功启动后,会出现模拟器锁定状态的界面。用鼠标按住屏幕左下方的小锁
23、,将其拖动到屏幕右下方的喇叭处,就会解除这种状态。这时会显示firstandroid的运行结果。当然我们可以直接在手机上测试该应用程序,通过USB与连接线连接手机与电脑,方便测试那些和硬件相关的应用程序,例如录音、拍照、重力感应、GPS、WIFI。如果这些功能无法在模拟器上测试,将给开发工作带来非常大的困难。在发布Android SDK的同时发布了一个Android USB驱动。将手机和电脑通过数据线相连后,并在计算机上安装这个USB驱动程序,就可以将手机变成一个测试程序的模拟器,也就是说,在Eclipse中运行程序后,会直接在手机上运行,而不是在计算机的模拟器上运行,这样就可以得到真实的运行
24、效果。2.3.2 如何用实现多线程下载及断点数据保存使用多线程断点续传下载器在下载的时候多个线程并发可以占用服务器端更多资源,从而加快下载速度,在下载过程中记录每个线程已拷贝数据的数量,如果下载中断,比如无信号断线、电量不足等情况下,这就需要使用到断点续传功能,下次启动时从记录位置继续下载,可避免重复部分的下载。这里采用SQLLite数据库来记录下载的进度。在实现断点续传下载的时候,本人是把线程每次下载结束后的当前任务信息都保存到数据库里面一次,相当于每次一个线程下载一次,就给当前任务拍个照片,把当前信息存到数据库里面。这样一旦暂停,或者退出程序,下次再下载的时候,直接从数据库里面读数据,然后
25、在这个数据的基础上继续下载就行。2.4 操作流程1. 通过电脑数据线连接“多线程文件下载器”应用程序的APK文件安装在Android手机上:用数据线连接到Android手机,在下拉状态栏出现“USB已连接”选项,点击进入“打开USB存储设备”按钮,会在“我的电脑”出现手机盘符,如F盘,然后将apk文件拷贝到F盘,最后点击“关闭USB存储设备”按钮。2. 进入“菜单”,查找“文件管理”按钮,点击后查找刚放入的apk文件,点击该文件直接进入文件安装向导,根据向导提示点击“下一步“进行安装。文件安装成功后会在Android界面出现应用图标,点击该图标即可进入应用程序界面。3. 点击“Android多
26、线程文件下载器”图标打开应用程序,进入“新建下载任务”操作界面,在“连接地址”栏输入需要下载资源的文件地址,“文件名”为下载后的资源名称,默认可以为空。“开启线程数”默认为3个线程,一次下载任务需要多少个线程来共同下载资源。“保存位置”默认保存到手机内存卡里。 4. 当输入完连接地址后,点击“立即下载”按钮可以看到界面的进度条对文件的下载进度,在进度条的下方会出现文件下载进度具体值。当点击“菜单键”会出现三个菜单选项:暂停下载、关于、退出。“暂停下载”用来模拟断点续传的功能,点击“暂停下载”菜单项,进度条会停止前进,整个下载进度会暂时停止,这是如果手机网络状态不好或手机重启,应用程序会将当前线
27、程下载的文件大小及下载地址分别根据线程数量保存到SQLLite数据表里面。当下次启动点击“继续下载”按钮后,进度条会立即初始化到上次文件下载的位置,继续在上次的位置下载文件资源,直至文件资源完全下载完成。2.5 环境配置开发本系统所需要的软硬件环境如下:2.5.1 硬件条件个人PC机:1.CPU:奔腾4.0用其以上2.内存:1G及其以上3. 基于Android系统的智能手机一部2.5.2 软件条件1.Windows Server 2003系统2.Eclipse集成开发工具3.Android SDK开发工具3 系统设计3.1 系统划分通过对该系统需求的调查研究,确定系统应该有不同的表现形式,系统
28、模块划分如下:3.1.1 多线程下载设计使用多线程下载文件可以更快完成文件的下载,多线程下载文件之所以快,是因为其抢占的服务器资源多。如:假设服务器同时最多服务100个用户,在服务器中一条线程对应一个用户,100条线程在计算机中并非并发执行,而是由CPU划分时间片轮流执行,如果A应用使用了99条线程下载文件,那么相当于占用了99个用户的资源,假设一秒内CPU分配给每条线程的平均执行时间是10ms,A应用在服务器中一秒内就得到了990ms的执行时间,而其他应用在一秒内只有10ms的执行时间。就如同一个水龙头,每秒出水量相等的情况下,放990毫秒的水 肯定比放10毫秒的水要多。 多线程下载的实现过
29、程: (1) 首先得到下载文件的长度,然后设置本地文件的长度。 HttpURLConnection.getContentLength(); RandomAccessFile file = new RandomAccessFile(QQWubiSetup.exe,rwd); file.setLength(filesize);/设置本地文件的长度 (2) 根据文件长度和线程数 计算每条线程下载的数据长度和下载位置。如:文件的长度为6M,线程数为3,那么,每条线程下载的数据长度为2M。 (3) 使用Http的Range头字段指定每条线程从文件的什么位置开始下载,下载到什么位置为止,如:指定从文件的2
30、M位置开始下载,下载到位置(4M-1byte)为止,代码如下: HttpURLConnection.setRequestProperty(Range, bytes=2097152-4194303); (4) 保存文件,使用RandomAccessFile类指定每条线程从本地文件的什么位置开始写入数据RandomAccessFile threadfile = new RandomAccessFile(QQWubiSetup.exe ,rwd); threadfile.seek(2097152);/从文件的什么位置开始写入数据 3.1.2 断点续传下载设计:(1) 断点续传需要在下载过程中记录每条
31、线程的下载进度(2) 每次下载开始之前先读取数据库,查询是否有未完成的记录,有就继续下载,没有则创建新记录插入数据库(3) 在每次向文件中写入数据之后,在数据库中更新下载进度(4) 下载完成之后删除数据库中下载记录通过Handler传输数据查看下载进度:这个主要用来记录百分比,每下载一部分数据就通知主线程来记录时间,主线程中创建的View只能在主线程中修改,其他线程只能通过和主线程通信,在主线程中改变View数据。本人使用Handler可以处理这种需求,主线程中创建Handler,重写handleMessage()方法,新线程中使用Handler发送消息,主线程即可收到消息,并且执行handl
32、eMessage()方法。3.1.3 界面设计随着科技的不断发展,计算机与软件的进步,新一代的移动终端用户针对应用软件的可操作性以及软件操作的舒适性等方面提出了更高的要求。除期望所用的软件拥有强大的功能外,更期望应用软件能尽可能的为他们提供一个轻松、愉快、感觉良好的操作环境。这表明友好的手机界面设计已经成为手机应用开发的一个重要组成部分。而手机界面在手机应用软件中占用了大量的开发时间,提高手机界面的开发效率,无疑是提高整个手机应用软件开发效率非常有效的手段。 如果用户不满意在PC机端通过图片单纯模拟Android操作系统窗口组件的显示效果,可以将最终生成的XML界面程序发送至Android手机
33、或Android模拟器端,通过Android应用程序对其进行解析,将界面显示出来。 该系统分为界面在PC机上的开发和界面在Android模拟器端显示两个部分。界面在PC机上的开发部分是基于MVC设计模式的总体框架设计的,该模块基本上是由界面组件、界面控制、组件属性和界面显示四个部分组成。界面组件和界面控制相当于MVC中的Model;组件属性和界面显示相当于MVC中的View;系统中负责组件和界面显示之间各种监听相当于MVC中的Control。界面在Android模拟器端显示模块实现了Android应用程序中的XML界面程序在Android模拟器上的显示。该模块将通过XML界面文件创建界面组件,
34、通过解析XML资源文件为适配器提供信息,然后通过Android框架结构预定好的调用机制,将适配器中的信息填充到界面组件中4。Android 应用程序组件包括4种实现: 活动(Activity)组件:Activity是Android的核心类,该类全名是android.app.Activity .Activity相当于C/S程序中的窗体Form或Web程序的页面。每一个Activity提供了一个可视化的区域。在这个区域可以放置各种Android组件,例如按钮、图像、文本框等。在Activity中有一个onCreate事件方法,一般在该方法中对Activity进行初始化。通过setContentVi
35、ew方法可以设置在Activity上显示的视图组件。服务(service)组件 :服务没有可视化接口,但可以在后台运行。每一个服务是一个android.app.Service的子类。 广播接收组件:广播接受者组件的唯一功能就是接收广播消息,以及对广播消息作出相应。有很多时候广播消息是由系统发出的。除此之外应用程序还可以发送广播,一个应用程序可以有很多个广播接收者,所有的广播接受者类都要继承android.content.BroadcastReceiver类。内容提供者组件:内容提供者可以为其它应用程序提供数据,这些数据可以保存在文件系统中,在ContentProvider类中定义了一系列的方法
36、,通过这些方法可以使其它的应用程序获得和存储内容提供者所支持的数据。Android多线程文件下载器的开发设计主要运用到了四种主要的组件:显示文本的组件TextView:TextView组件使用标签定义,。输入文本的组件EditText: EditText是TextView类的子类,一次EditText组件具有TextView组件的一切XML属性及方法。EditText与TextView的区别是EditText组件可以输入文本,而TextView只能显示文本。EditText组件使用标签定义。当然EditText可以通过多种方式指定允许输入的字符,例如android:digits属性值设置为0-
37、9。Android:numeric属性设为integer。Android:inputType属性设为number。进度条组件ProgressBar:任务或工作完成率是软件中经常要展现给用户的信息。这些信息载体总是离不开进度条。在Android中提供了一个ProgressBar组件,该组件拥有一个完整的进度条具备的所有功能。Button最常用的是其单击事件,可以通过Button类的setOnClickListener方法设置处理单击事件对象实例,如果当前的类实现了android.view.View.OnClickListener接口,可以直接将this传入setOnClickListener放入
38、,Android布局应用:为了适应各种各样的界面风格,Android系统提供了5种布局,这5种布局是FrameLayout(框架布局)、LinearLayout(线性布局)、RelativeLayout(相对布局)、TableLayout(表格布局)和AbsoluteLayout(绝对布局)。利用这5种布局可以将屏幕上的视图随心所欲的摆放,而且视图的大小和位置会随着手机屏幕大小的变化做出调整。3.1.4 数据库设计本系统采用了SQLite作为该系统的数据库,SQLite是非常轻量的数据库。从SQLite的标志是一根羽毛可以看出SQLite的目标就是无论是过去、现在还是未来,SQLite都将以轻
39、量级数据库的姿态出现。SQLite虽然轻量,但在执行某些简单的SQL语句时甚至比MySql和Postgresql还快。SQLite是一个内嵌式的数据库。数据库服务器就在你的程序中,其好处是不需要网络配置和管理。数据库的服务器和客户端运行在同一个进程中。这样可以减少网络访问的消耗,简化数据库管理,使你的程序部署起来更容易。所有需要你做的都已经和你的程序一起编译好了5。进入SQLite的官方网站,在下载页面找到Windows版的二进制下载包,下载解压后只有一个文件:sqlite3.exe。这个文件就是操作SQLite数据库的工具。在控制台中可以输入SQL语句或控制台命令,可以进行数据库的创建,数据
40、表的建立,SQLite提供了各种类型的程序接口,因此可以管理SQLite数据库的工具很多,建议使用SQLite Expert Professional,该工具拥有大量的可视化功能,例如建立数据库、建立表、SQL Builder等工具。SQLite的查询、插入语句与其他数据库类似,都使用了Insert关键字和Select关键字。SQLite功能:SQLite虽然很小巧,但是支持的SQL语句不会逊色于其他开源数据库,它支持的SQL包括: ATTACH DATABASE BEGIN TRANSACTION COMMENT COMMIT TRANSACTION COPY CREATE INDEX CR
41、EATE TABLE CREATE TRIGGER CREATE VIEW DELETE DETACH DATABASE DROP INDEX DROP TABLE DROP TRIGGER DROP VIEW END TRANSACTION EXPLAIN EXPRESSION INSERT ON CONFLICT CLAUSE PRAGMA REPLACE ROLLBACK TRANSACTION SELECT UPDATE 同时它还支持事务处理功能等等。也有人说它像Microsoft的Access,有时候真的觉得有点像,但是事实上它们区别很大。比如SQLite 支持跨平台,操作简单,能够
42、使用很多语言直接创建数据库,而不像Access一样需要Office的支持。如果你是个很小型的应用,或者你想做嵌入式开发,没有合适的数据库系统,那么现在你可以考虑使用SQLite。目前它的最新版本是 3.7.6 ,发布时间是2011年4月12日。它的官方网站是:http:/www.sqlite. org或者http:/www.sqlite .com .cn,能在上面获得源代码和文档。同时因为数据库结构简单,系统源代码也不是很多,也适合想研究数据库系统开发的专业人士。 SQLite特性:下面是访问SQLite官方网站: http:/www.sqlite. org/ 时第一眼看到关于SQLite的特
43、性:ACID事务;零配置 无需安装和管理配置;储存在单一磁盘文件中的一个完整的数据库数据库文件可以在不同字节顺序的机器间自由的共享;支持数据库大小至2TB;足够小, 大致3万行C代码, 250K ;比一些流行的数据库在大部分普通数据库操作要快 ;简单, 轻松的API ;包含TCL绑定, 同时通过Wrapper支持其他语言的绑定 ;良好注释的源代码, 并且有着90%以上的测试覆盖率 ;独立,没有额外依赖;Source完全的Open, 你可以用于任何用途, 包括出售它 ;支持多种开发语言,C, PHP, Perl, Java, ASP .NET,Python 。SQLite的数据类型: 首先你会接
44、触到一个让你惊讶的名词: Typelessness(无类型). 对! SQLite是无类型的. 这意味着你可以保存任何类型的数据到你所想要保存的任何表的任何列中, SQLite支持 NULL、INTEGER、REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的类型只有五种,但实际上sqlite3也接受varchar(n)、char(n)、decimal(p,s) 等数据类型,只不过在运算或保存时会转成对应的五种数据类型无论这列声明的数据类型是什么(只有在一种情况下不是, 稍后解释). 对于SQLite来说对字段不指定类型是完全有效的. 如: Create
45、Table ex1(a, b, c); 诚然SQLite允许忽略数据类型, 但是仍然建议在你的Create Table语句中指定数据类型. 因为数据类型对于你和其他的程序员交流, 或者你准备换掉你的数据库引擎. SQLite支持常见的数据类型, 如: CREATE TABLE ex2( a VARCHAR(10), b NVARCHAR(15), c TEXT, d INTEGER, e FLOAT, f BOOLEAN, g CLOB, h BLOB, i TIMESTAMP, j NUMERIC(10,5) k VARYING CHARACTER (24), l NATIONAL VARY
46、ING CHARACTER(16) ); 前面提到在某种情况下, SQLite的字段并不是无类型的。即定义为INTEGER PRIMARY KEY的字段只能存储64位整数, 当向这种字段保存除整数以外的数据时,将会产生错误。 3.1.5 物理结构表断点数据表对应数据库中表,存储下载数据大小,如下载连接地址、线程ID、下载文件大小等,具体设计如表3-1所示。表31 断点数据表数据字段名数据类型字段意义idInt(Auto)标识(递增字段)DownPathChar(1000)下载连接地址threadidInteger线程IDDownLengthInteger下载文件大小4 编码与实现4.1 HTTP通信4.1.1 功能描述Http是Internet中广泛使用的协议,几乎所有的语言和SDK都会不同程度的支持HTTP,在Android SDK中可以采用多种方式使用HTTP,例如HttpURLConn