设为首页 收藏本站
查看: 1340|回复: 0

[经验分享] action的使用之AIR操作本地数据库sqlite的示例

[复制链接]

尚未签到

发表于 2016-12-1 10:51:36 | 显示全部楼层 |阅读模式
  使用封装好的SQLiteAction类能很方便地实现本地数据库操作,甚至不需要熟悉本地数据库操作的API,有关SQLiteAction的内容可以参考http://sunnyluo.iyunv.com/blog/800106。以下简单示例是关于使用SQLiteAction类来操作本地数据库sqlite的:
  
首先创建一个本地数据库“resource/db/sys.db”,并创建一个用户表T_User,字段有用户ID(C_UserID )和用户名(C_UserName),可以插入或删除一条数据。下面就分析一下主要的功能类。
先创建数据库操作服务类:SysdbService.as,所有对于sys.db数据库的操作都封装在这个类里面:

/**
*系统数据库操作服务类
*/
package examples.sqlite.service
{
import flash.filesystem.File;
import sunnyluo.action.IAction;
import sunnyluo.sqlite.SQLiteAction;
import sunnyluo.sqlite.SQLiteConnection;
public class SysDbService
{
//系统数据库路径
public static const SYS_DB_PATH:String = File.applicationDirectory.nativePath + "/resource/db/sys.db"
public static var sysDbConn:SQLiteConnection = new SQLiteConnection(SYS_DB_PATH);
public function SysDbService()
{
}
//创建用户数据表
public static function createUserTable():IAction
{
var sql:String =
"CREATE TABLE IF NOT EXISTS T_User (" +
"C_UserID TEXT, "+
"C_UserName TEXT)";
return getAction(sql);
}
//插入一条数据到用户表里
public static function insertUser(userId_:String, userName_:String):IAction
{
var sql :String = "INSERT INTO T_User(C_UserID,C_UserName) VALUES('" +
userId_+"','"+userName_+"')";
return getAction(sql);
}
//删除用户表里的一条数据
public static function deleteUser(userId_:String):IAction
{
var sql : String = "DELETE FROM T_User WHERE C_UserID= '"+userId_+"'";
return getAction(sql);
}
//更新用户表里的一条数据
public static function updateUser(userId_:String, userName_:String):IAction
{
var sql:String = "UPDATE T_User SET" +
" C_UserID = '"+userId_+"',"+
" C_UserName = '"+userName_+"'"+
" WHERE C_UserID  = '"+ userId_+"'";
return getAction(sql);
}
//获取用户表里的所有数据
public static function getAllUsers():IAction
{
var sql : String = "SELECT * FROM T_User";
return getAction(sql);
}
//获取数据库动作
private static function getAction(sql_ : String):IAction
{
var __action:IAction = new SQLiteAction(sysDbConn, sql_);
return __action;
}
}
}
  

调用服务类SysdbService里的静态方法,如创建用户表并侦听完成事件,只需这样:

//创建用户表
private function createTable():void
{
var __action:IAction = SysDbService.createUserTable();
ActionUtil.addActionHandler(__action, onTableComplete, onTableError);
__action.execute();
function onTableComplete(event:ActionEvent):void
{
//getData(); //执行其他操作
}
function onTableError(event:ActionEvent):void
{
Alert.show("无法创建用户表!");
}
}
  

如果要获取数据表里的数据,一般都会创建一个action类来封装获取数据的逻辑,并使用VO来存储单条数据,最后返回数组。在例子中,我创建了GetUsersAction类来封装获取所有用户数据的逻辑,并用UserVO来存储用户数据,最后返回了存有所有用户数据的数组:

/**
*获取所有用户数据
*/
package examples.sqlite.action
{
import examples.sqlite.service.SysDbService;
import examples.sqlite.vo.UserVO;
import sunnyluo.action.Action;
import sunnyluo.action.ActionEvent;
import sunnyluo.action.ActionUtil;
import sunnyluo.action.IAction;
public class GetUsersAction extends Action
{
public function GetUsersAction(name_:String="")
{
super(name_);
}
override public function execute(event:ActionEvent = null):void
{
getUsers();
}
private function getUsers():void
{
var __action:IAction = SysDbService.getAllUsers();
ActionUtil.addActionHandler(__action, onComplete, onError);
__action.execute();
}
//获取用户数据成功
private function onComplete(event:ActionEvent):void
{
var __result:Array = [];
var __userVO:UserVO;  
var __arr:Array = event.data as Array;
var __len:int = __arr ? __arr.length : 0;
for (var i:int=0; i < __len; i++)
{
__userVO=new UserVO();
__userVO.userID=__arr.C_UserID;
__userVO.userName=__arr.C_UserName;
__result.push(__userVO);
}
this.actionCompleteHandler(__result);//返回所有用户数据
}
//获取用户数据失败
private function onError():void
{
this.actionErrorHandler();
}
}
}
  

调用GetUsersAction的方法,并把数据赋予给一个List来展示:

//获取所有用户数据
private function getData():void
{
var __action:IAction = new GetUsersAction();
ActionUtil.addActionHandler(__action, onDataComplete, onDataError);
__action.execute();
function onDataComplete(event:ActionEvent):void
{
var __arr:Array = event.data;
_sqliteUI.usersList.dataProvider = __arr;
//_sqliteUI.enabled = true;
}
function onDataError(event:ActionEvent):void
{
//_sqliteUI.enabled = true;
}
}
  
关于数据库其它的操作(如删除数据),在示例中都有涉及到,读者可以下载查看,并做扩展。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-308140-1-1.html 上篇帖子: 二维码和相片在SQLite中的图片保存和查询 下篇帖子: sqlite 数据类型 全面(转自:http://blog.csdn.net/jin868/article/details/5961263)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表