导航:首页 > 操作系统 > androidsqlite博客

androidsqlite博客

发布时间:2025-06-10 18:48:56

㈠ 有哪些比较好的androidSQLite开源工具类(android中的sqlite数据库具有哪些特点)

是一个免费的开源的、简易的、遵循Apache2开源协议发布的Android开发框架,其开发宗旨是简单、快速的进行Android应用程序的开发,包含Androidmvc、简易sqliteorm、ioc模块、封装Androidhttpclitent的http模块,具有快速构建文件缓存功能,无需考虑缓存文件的格式,都可以非常轻松的实现缓存,它还基于文件缓存模块实现了图片缓存功能,在android中加载的图片的时候,对oom的问题,和对加载图片错位的问题都轻易解决。他还包括了一个手机开发中经常应用的实用工具类,如日志管理,配置文件管理,android下载器模块,网络切换检测等等工具。

目前主要有以下模块:

MVC模块:实现视图与模型的分离。

ioc模块:android中的ioc模块,完全注解方式就可以进行UI绑定、res中的资源的读取、以及对象的初始化。

数据库模块:android中的orm框架,使用了线程池对sqlite进行操作。

http模块:通过httpclient进行封装http数据请求,支持异步及同步方式加载。

缓存模块:通过简单的配置及设计可以很好的实现缓存,对缓存可以随意的配置

图片缓存模块:imageview加载图片的时候无需考虑图片加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象。

配迅扰颂置器模块:可以对简易的实现配对配置的操作,目前配置文件可以支持Preference、Properties对配置进行存取。

日志打印模块:可以较快的轻易的是实现日志打印,支持日志打印的扩展,目前支持对sdcard写入本地打印、以及控制台打印

下载器模块:可以简单的实现多线程下载、后台下载、断点续传、对下载进李肆行控制、如开始、暂停、删除等亩郑等。

网络状态检测模块:当网络状态改变时,对网络状态进行检测。

㈡ android sqlite 已经插入到数据库的数据查不到

楼主取数据的循环方式有点问题,试试下面的
for(cursor.moveToFirst();!cursor.isAfterLast();cursor.moveToNext())
{
HashMap map=new HashMap();
map.put("num1", cursor.getString(1));
map.put("num2", cursor.getString(2));
map.put("num3", cursor.getString(3));
map.put("salesub", cursor.getString(4));
map.put("addr", cursor.getString(6));
map.put("phonenum", cursor.getString(7));
list.add(map);
}

㈢ 如何使用Mock来测试Files,Database和ContentProviders

Android是如何实现应用程序之间数据共享的?一个应用程序可以将自己的数据完全暴露出去,外界更本看不到,也不用看到这个应用程序暴露的数据是如何存储的,或者是使用数据库还是使用文件,还是通过网上获得,这些一切都不重要,重要的是外界可以通过这一套标准及统一的接口和这个程序里的数据打交道,例如:添加(insert)、删除(delete)、查询(query)、修改(update),当然需要一定的权限才可以。如何将应用程序的数据暴露出去?Android提供了ContentProvider,一个程序可以通过实现一个Contentprovider的抽象接口将自己的数据完全暴露出去,而且Contentproviders是以类似数据库中表的方式将数据暴露。Contentproviders存储和检索数据,通过它可以让所有的应用程序访问到,这也是应用程序之间唯一共享数据的方法。要想使应用程序的数据公开化,可通过2种方法:创建一个属于你自己的Contentprovider或者将你的数据添加到一个已经存在的Contentprovider中,前提是有相同数据类型并且有写入Contentprovider的权限。如何通过一套标准及统一的接口获取其他应用程序暴露的数据?Android提供了ContentResolver,外界的程序可以通过ContentResolver接口访问ContentProvider提供的数据。当前篇主要说明,如何获取其它应用程序共享的数据,比如获取Android手机电话薄中的信息。什么是URI?在学习如何获取ContentResolver前,有个名词是必须了解的:URI。URI是网络资源的定义,在Android中赋予其更广阔的含义,先看个例子,如下:将其分为A,B,C,D4个部分:A:标准前缀,用来说明一个ContentProvider控制这些数据,无法改变的;B:URI的标识,它定义了是哪个ContentProvider提供这些数据。对于第三方应用程序,为了保证URI标识的唯一性,它必须是一个完整的、小写的类名。这个标识在元素的authorities属性中说明:C:路径,ContentProvider使用这些路径来确定当前需要生什么类型的数据,URI中可能不包括路径,也可能包括多个;D:如果URI中包含,表示需要获取的记录的ID;如果没有ID,就表示返回全部;由于URI通常比较长,而且有时候容易出错,切难以理解。所以,在Android当中定义了一些辅助类,并且定义了一些常量来代替这些长字符串,例如:People.CONTENT_URIContentResolver介绍说明看完这些介绍,大家一定就明白了,ContentResolver是通过URI来查询ContentProvider中提供的数据。除了URI以外,还必须知道需要获取的数据段的名称,以及此数据段的数据类型。如果你需要获取一个特定的记录,你就必须知道当前记录的ID,也就是URI中D部分。前面也提到了Contentproviders是以类似数据库中表的方式将数据暴露出去,那么ContentResolver也将采用类似数据库的操作来从Contentproviders中获取数据。现在简要介绍ContentResolver的主要接口,如下:返回值函数声明finalUriinsert(Uriurl,ContentValuesvalues).finalintdelete(Uriurl,Stringwhere,String[]selectionArgs)Deletesrow(s)specifiedbyacontentURI.finalCursorquery(Uriuri,String[]projection,Stringselection,String[]selectionArgs,StringsortOrder)QuerythegivenURI,.finalintupdate(Uriuri,ContentValuesvalues,Stringwhere,String[]selectionArgs)Updaterow(s)inacontentURI.看到这里,是否感觉与数据库的操作基本一样的?就是这样的,详细解析请参考AndroidSQLite解析篇中的说明,不在此详细说明。最后一个问题:如何获取ContentResolver?调用getContentResolver(),例如:ContentResolvercr=getContentResolver();制作ContentResolver实例以上就完全介绍了如何获取、使用ContentResolver,启动Eclipes,制作一个完整的实例如下:打开showcontent.java,修改如下:packagemoandroid.showcontact;importandroid.app.ListActivity;importandroid.database.Cursor;importandroid.os.Bundle;importandroid.provider.Contacts.Phones;importandroid.widget.ListAdapter;importandroid.widget.SimpleCursorAdapter;{protectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);//ContentResolver通过URI来查询ContentProvider中提供的数据Cursorc=getContentResolver().query(Phones.CONTENT_URI,null,null,null,null);startManagingCursor(c);ListAdapteradapter=newSimpleCursorAdapter(this,android.R.layout.simple_list_item_2,c,newString[]{Phones.NAME,Phones.NUMBER},newint[]{android.R.id.text1,android.R.id.text2});setListAdapter(adapter);}}然后在AndroidManifest.XML中元素前增加如下许可:最后运行程序,在模拟器启动后,单击Menu返回到Home界面,打开Contacts选择Contacts标签页,添加2个联系人信息。返回到Home,选择moandroid.showcontact运行,刚添加的2个联系人信息将显示在界面上

㈣ 如何解决androidsQLiteDatabase中的表不存在

1
问题分析:为什么,有这个提示。表没有创建成功,是因为数据库在执行的时候,没有执行创建表的命令
2
查看创建表的命令的地方。这里,我们使用的是一个继承类:DatabaseHelper。新建的命令是在我们之前创建好的表的下面。

3
执行程序,发现出现问题。之前创建的两个表是可以执行的,但是,新建的表不存在。

4
解决问题:在需要调用的地方,加上下面这段代码。这样就是在原有的基础上,进行了一次更新操作。把版本升级了一下。并且,只是在oncreate中,执行了一次。

5
我们来看一下更新的代码。这里需要把之前创建的数据表给删除掉,然后,重新执行一下创建,就可以了,否则,会出现数据表已经创建的问题。

6
出现的原因:这个应该是SQLiteDatabase在创建的时候,只是执行了一次,之后,就不在执行onCreate这个函数了。(可以catlog看一下)。

㈤ 如何写 Android init.rc-ljbphoebe-ChinaUnix博客

Commands:命令
Actions: 动作
Triggers: 触发条件
Services: 服务
Options: 选项
Propertise: 属性

(1) Commands是一些基本的操作,例如:
mkdir /sdcard 0000 system system mkdir /system
mkdir /data 0771 system system
mkdir /cache 0770 system cache
mkdir /config 0500 root root
mkdir /sqlite_stmt_journals 01777 root root
mount tmpfs tmpfs /sqlite_stmt_journals size=4m
这些命令在init可执行程序中被解析,然后调用相关的函数来实现。

(2) Actions(动作)表示一系列的命令,通常在Triggers(触发条件)中调用,动作和触发条件的形式为:
on动作的使用示例如下:
on init
export PATH /sbin:/system/sbin:/system/bin:/system/xbin
mkdir /system
init表示一个触发条件,这个触发事件发生后,进行设置环境变量和建立目录的操作称为一个“动作”

(3) Services(服务)通常表示启动一个可执行程序,Options(选项)是服务的附加内容,用于配合服务使用。
service vold /system/bin/vold
socket vold stream 0660 root mount
service bootsound /system/bin/playmp3
user media
group audio
oneshot
vold和bootsound分别是两个服务的名称,/system/bin/vold和/system /bin/playmp3分别是他们所对应的可执行程序。
socket、user、group、oneshot就是配合服务使用的选项。其中oneshot选项表示该服务只启动一次,而如果没有oneshot选项,
这个可执行程序会一直存在--如果可执行程序被杀死,则会重新启动。

(4) Properties(属性)是系统中使用的一些值,可以进行设置和读取。
setprop ro.FOREGROUND_APP_MEM 1536
setprop ro.VISIBLE_APP_MEM 2048
on property:ro.kernel.qemu=1
start adbd
setprop 用于设置属性,on property可以用于判断属性,这里的属性在整个Android系统运行中都是一致的。
init脚本的关键字可以参考init进程的system/core/init/keyword.h文件。
init.rc的使用方法,可以参考说明文件system/core/init/readme.txt
如果想要修改启动过程只需要修改init.c(system/core/init)或者init.rc里的内容即可.

如何去写
Android init.rc (Android init language)
Android 初始化语言由四大类声明组成 : 行为类 (Actions), 命令类 (Commands) ,服务类 (Services), 选项类 (Options).
* 初始化语言以行为单位,由以空格间隔的语言符号组成。 C 风格的反斜杠转义符可以用来插入空白到语言符号。双引号也可以用来防止文本被空格分成多个语言符号。当反斜杠在行末时,作为折行符。
* 以 # 开始 ( 前面允许有空格 ) 的行为注释行。
* Actions 和 Services 隐含声明一个新的段落。所有该段落下 Commands 或 Options 的声明属于该段落。第一段落前的 Commands 或Options 被忽略。
* Actions 和 Services 拥有独一无二的命名。在它们之后声明相同命名的类将被当作错误并忽略。
Actions
-------
Actions 是一系列命令的命名。 Actions 拥有一个触发器 (trigger) 用来决定 action 何时执行。当一个 action 在符合触发条件被执行时,如果它还没被加入到待执行队列中的话,则加入到队列最后。
队列中的 action 依次执行, action 中的命令也依次执行。 Init 在执行命令的中间处理其它活动 ( 设备创建 / 销毁 ,property 设置,进程重启) 。
Actions 表现形式为:
on
Services
--------
Services 是由 init 启动,在它们退出时重启 ( 可选 ) 。 Service 表现形式为 :
service [ ]*


...

Options
-------
Options 是 Services 的修饰,它们影响 init 何时、如何运行 service.

critical
这是一个设备关键服务 (device-critical service) . 如果它在 4 分钟内退出超过 4 次,设备将重启并进入恢复模式。

disabled
这个服务的级别将不会自动启动,它必须被依照服务名指定启动才可以启动。

setenv
设置已启动的进程的环境变量 的值

socket [ [ ] ]
创建一个名为 /dev/socket/ 的 unix domin socket ,并传送它的 fd 到已启动的进程。 必须为 "dgram" 或 "stream". 用户和组默认为 0.

user
在执行服务前改变用户名。当前默认为 root. 如果你的进程需要 linux 能力,你不能使用这个命令。你必须在还是 root 时请求能力,并下降到你需要的 uid.

group [ ]*
在执行服务前改变组。在第一个组后的组将设为进程附加组 ( 通过 setgroups()). 当前默认为 root.

oneshot
在服务退出后不重启。

class
为 service 指定一个类别名。同样类名的所有的服务可以一起启动或停止。如果没有指定类别的服务默认为 "default" 类。

onrestart
当服务重启时执行一个命令。

Triggers
--------
Triggers( 触发器 ) 是一个字符串,可以用来匹配某种类型的事件并执行一个 action 。

boot
这是当 init 开始后执行的第一个触发器 ( 当 /init.conf 被加载 )

=
当 property 被设为指定的值 时触发。

device-added-
device-removed-
当设备节点被添加或移除时触发。

service-exited-
当指定的服务存在时触发


Commands
--------

exec [ ]*
Fork 并执行一个程序 (). 这将被 block 直到程序执行完毕。最好避免执行例如内建命令以外的程序,它可能会导致 init 被阻塞不动。

export
设定全局环境变量 的值 ,当这个命令执行后所有的进程都可以取得。

ifup
使网络接口 联机。

import
解析一个 init 配置文件,扩展当前配置文件。

hostname
设置主机名

chmod
改变文件访问权限

chown
改变文件所属和组

class_start
当指定类别的服务没有运行,启动该类别所有的服务。

class_stop
当指定类别的服务正在运行,停止该类别所有的服务。

domainname
设置域名。

insmod
加载该路径 的模块

mkdir [mode] [owner] [group]
在 创建一个目录 , 可选选项 :mod,owner,group. 如果没有指定,目录以 755 权限, owner 为 root,group 为 root 创建 .

mount
[ ]*
尝试 mount 到目录
. 可以用 mtd@name 格式以命名指定一个 mtd 块设备。 包含"ro","rw","remount","noatime".
例如:
mount -t vfat -o fmask=0000,dmask=0000,rw,flush,noatime,nodiratime /dev/block/mmcblk1p1 /SD1
chown system system /SD1
chmod 0777 /SD1
mount -t vfat -o fmask=0000,dmask=0000,rw,flush,noatime,nodiratime /dev/block/mmcblk1p6 /SD3
chown system system /SD3
chmod 0777 /SD3
setkey
暂时没有

setprop
设置系统 property 的值 .

setrlimit
设置 resource 的 rlimit.

start
启动一个没有运行的服务。

stop
停止一个正在运行的服务。

symlink
创建一个 的符号链接到

sysclktz
设置系统时区 (GMT 为 0)

trigger
触发一个事件。用于调用其它 action 。

write [ ]*
打开 的文件并写入一个或多个字符串。
Properties
----------
Init 会更新一些系统 property 以提供查看它正在干嘛。
init.action
当前正在执行的 action, 如果没有则为 ""

init.command
被执行的命令,如果没有则为 ""

init.svc.
命名为 的服务的状态 ("stopped", "running", "restarting")


init.rc 示例 :
-----------------

# not complete -- just providing some examples of usage
#
on boot
export PATH /sbin:/system/sbin:/system/bin
export LD_LIBRARY_PATH /system/lib

mkdir /dev
mkdir /proc
mkdir /sys

mount tmpfs tmpfs /dev
mkdir /dev/pts
mkdir /dev/socket
mount devpts devpts /dev/pts
mount proc proc /proc
mount sysfs sysfs /sys

write /proc/cpu/alignment 4

ifup lo

hostname localhost
domainname localhost

mount yaffs2 mtd@system /system
mount yaffs2 mtd@userdata /data

import /system/etc/init.conf

class_start default

service adbd /sbin/adbd
user adb
group adb

service usbd /system/bin/usbd -r
user usbd
group usbd
socket usbd 666

service zygote /system/bin/app_process -Xzygote /system/bin --zygote
socket zygote 666

service runtime /system/bin/runtime
user system
group system

on device-added-/dev/compass
start akmd

on device-removed-/dev/compass
stop akmd

service akmd /sbin/akmd
disabled
user akmd
group akmd

调试
---------------
默认情况下, init 执行的程序输出的信息和错误到 /dev/null. 为了 debug ,你可以通过 Android 程序 logwrapper 执行你的程序。这将复位向输出 / 错误输出到 Android logging 系统 ( 通过 logcat 访问 ) 。


===============================================================

Android——init.rc脚本

在Android中使用启动脚本init.rc,可以在系统的初始化中进行简单的操作。
init.rc启动脚本路径:system/core/rootdir/init.rc
内容:

Commands:命令
Actions:动作
Triggers:触发条件
Services:服务
Options:选项
Properties:属性
Commands是一些基本操作。如:
mkdir /system
mkdir /data 0771 system system
mkdir /persist 0771 system system
devwait /dev/block/mmcblk0p12
mount ext3 /dev/block/mmcblk0p
Action表示一系列命令,通常在Triggers中调用,如:

on init //表示一个触发条件
sysclktz 0
loglevel 3
# setup the global environment
export PATH /sbin:/system/sbin:/system/bin:/system/xbin
export LD_LIBRARY_PATH /system/lib
export ANDROID_BOOTLOGO 1
Services通常表示启动一个可执行程序,Options是服务的附加内容,用于配合服务使用。
service vold /system/bin/vold //vold是服务名称,/system/bin/vold是所对应的可执行程序。
socket vold stream 0660 root mount //socket是配合服务使用的选项
ioprio be 2
service netd /system/bin/netd
socket netd stream 0660 root system
配合服务使用的选项有socket,user,group,oneshot。
oneshot表示该服务只启动一次,而如果没有oneshot选项,这个可执行程序将一直存在——如果可执行程序被杀死,则会重新启动。
Properties是系统中使用的一些值,可以进行设置和读写。
setprop ro.HIDDEN_APP_MEM 5120 //setprop用于设置属性
setprop ro.CONTENT_PROVIDER_MEM 5632
setprop ro.EMPTY_APP_MEM 6144
...
on property:ro.kernel.qemu=1 //on property用于判断属性
start adbd
这里的属性在整个android系统运行中都是一致的。
init脚本的关键字可以参考init进程中的system/core/init/keyword.h文件。如:
KEYWORD(chroot, COMMAND, 1, do_chroot) //chroot是命令,do_chroot()是调用的函数,这个函数在init进程中的system/core/init/builtins.c文件中定义。
例如:
service akmd /system/bin/logwrapper /sbin/akmd

阅读全文

与androidsqlite博客相关的资料

热点内容
葛优瘫最佳解压方式 浏览:666
影院服务器序列号怎么看 浏览:126
g300s怎么编程 浏览:768
我的世界手机版命令方块指令力量 浏览:739
辽宁小学生编程班 浏览:122
androidjni入门 浏览:616
三菱数控车床怎样编程 浏览:785
把一个文件解压到目录下 浏览:154
程序员学唱歌 浏览:703
社区看病的下的什么app 浏览:469
女生爱命令 浏览:650
安卓为什么没有广告 浏览:892
服务器2m是什么意思 浏览:995
什么app可以玩数字货币 浏览:835
linux常用命令root 浏览:353
什么是io编程 浏览:891
江恩pdf 浏览:914
程序员为什么越来越喜欢用笔记 浏览:998
c盘uu文件夹能删掉吗 浏览:590
小金龙app有什么用 浏览:813