当前位置:  编程技术>移动开发
本页文章导读:
    ▪判定系统版本        判定系统版本。double version = [[UIDevice currentDevice].systemVersion doubleValue];//判定系统版本。 ......
    ▪ 十月2场CMDN Club活动专题、视频、资源分享        10月2场CMDN Club活动专题、视频、资源分享本月的2场技术交流活动,相关资源分享。其实活动结束后的2天内,大部分资源都上线了(赞编辑部活动报道的速度),可是还是有很多朋友不知道。.........
    ▪ phonegap 中的储存       phonegap 中的存储phonegap 中与存储相关的对象有 Database 数据库对象 SQLTransaction   事物对象 SQLResultSet Sql结果对象 SQLResultSetList 查询返回数据集对象 SQLError Sql错误对象 localStorage 本地存储对象 Da.........

[1]判定系统版本
    来源: 互联网  发布时间: 2014-02-18
判定系统版本。

double version = [[UIDevice currentDevice].systemVersion doubleValue];//判定系统版本。


    
[2] 十月2场CMDN Club活动专题、视频、资源分享
    来源: 互联网  发布时间: 2014-02-18
10月2场CMDN Club活动专题、视频、资源分享

本月的2场技术交流活动,相关资源分享。其实活动结束后的2天内,大部分资源都上线了(赞编辑部活动报道的速度),可是还是有很多朋友不知道。所以我在这里再分享一下。

中秋国庆双节后,全新改版#CMDN Club#移动开发者俱乐部将连续奉上2场线下活动 


从粉笔网多终端产品快速开发说开去——移动创业产品的架构和项目管理(10月10日)


专题:

http://subject.csdn.net/cmdn20/


视频:

粉笔网杨元祖:多终端的服务器架构

http://v.csdn.hudong.com/s/article.html?arcid=2810800

粉笔网郭常圳:粉笔网的Scrum项目管理实践

http://v.csdn.hudong.com/s/article.html?arcid=2810794

  • Scrum游戏环节 小组上台总结
  • 最佳创意组 站着挣钱
  • 第一小组汇报“战绩"
  • 游戏惩罚 8连拍
  • 各小组Leader
  • 现场座无虚席
  • Scrum游戏环节 激情演讲
  • 最长的战果



















从程序员杂志iPad版开发说开去——移动客户端的外包项目管理(10月11日)


专题:

http://subject.csdn.net/cmdn21/


视频:

爱图腾黄之豪:从需求到交付——优化你的移动应用开发流程

http://v.csdn.hudong.com/s/article.html?arcid=2810803

CSDN李宁:从程序员杂志iPad版的外包项目管理说开去

http://v.csdn.hudong.com/s/article.html?arcid=2810802


  • 讲师耐心讲解
  • 游戏环节,美女观众分享故事
  • 与会者发表个人观点
  • 论坛环节
  • 项目外包模拟游戏
  • 一起吐槽,一起畅谈
  • 小组讨论,群策群力
  • 观众认真聆听





















    
[3] phonegap 中的储存
    来源: 互联网  发布时间: 2014-02-18
phonegap 中的存储
phonegap 中与存储相关的对象有
Database 数据库对象
SQLTransaction   事物对象
SQLResultSet Sql结果对象
SQLResultSetList 查询返回数据集对象
SQLError Sql错误对象
localStorage 本地存储对象

Database 数据库对象:
通过openDatabase方法获得该对象
例如:
window.openDatabase(database_name, database_version, database_displayname, database_size);

var dbOne = window.openDatabase("test1", "1.0", "Test DB", 1000000);

database_name:数据库名字,
database_version:数据库版本
database_displayname:显示名字
database_size:数据库大小

创建完成后便会在/data/data/包名/app_database/dbOne.db找到刚才创建的数据库文件,可以利用DDMS查看

SQLTransaction   事物对象
phonegap没有提供直接获取事物对象的方法,而是利用Database 对象transaction方法,将事物对象传递给一个回调
函数,例如
dbOne.transaction(createATable, errorCreateTable, successCreateTable);

createATable即是一个回调函数,会将事物对象以参数的形式传进去,createATable函数

createATable(trans){
}
这里的trans即是传递进的事物对象,有了事物对象就可利用事物对象的executeSql方法执行sql语句

例如
createATable(trans){
trans.executeSql('CREATE TABLE IF NOT EXISTS MyTab (id unique, data)');
tx.executeSql('INSERT INTO MyTab (id, data) VALUES (1, "First row")');
tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');

}
这样就利用数据库的事物对象创建了MyTab表并且插入了两条数据

SQLError 错误对象
SQLError对象也是以参数的形式传递给一个回调函数
在上面的方法
dbOne.transaction(createATable, errorCreateTable, successCreateTable);
errorCreateTable就是一个回调函数,如果dbOne.transaction函数执行失败,就会调用回调函数errorCreateTable
同时将SQLError对象传递进去
例如
function errorCreateTable(err)
{
alert("err code:"+err.code+"err message:"+err.message');
}

code和message为SQLError对象的两个属性


SQLResultSet对象


该对象是由事物对象的executeSql方法传递给回调函数,在回调函数中在对结构集对象操作,例如
 tx.executeSql('SELECT * FROM MyTab', [], querySuccess, errorCB);

querySuccess即是成功执行后的回调函数,

function querySuccess(trans, results) {
alert("Returned rows = " + results.rows.length);

if (!resultSet.rowsAffected) {
  alert('No rows affected!');
  return false;
}
该函数接受两个参数:事物对象和结果集对象SQLResultSet,SQLResultSet包含三个属性
insertId 函数插入数据行的row ID
rowsAffected  改变的数据行的数量
rows:rows是一个SQLResultSetList 对象,该对象代表执行查询sql时返回的所有数据行

SQLResultSetList 查询返回的结果集对象
该对象包含一个属性 length(返回的数据行数量),一个方法item(该方法返回某个特定的数据行0


 function querySuccess(trans, results) {
        var len = results.rows.length; 
        console.log("MyTab table: " + len + " rows found.");
        for (var i=0; i<len; i++){
            console.log("Row = " + i + " ID = " + results.rows.item(i).id + " Data =  " + results.rows.item(i).data);
        }
    }

localStorage本地存储对象

该对象和手机设备上的存储没有关系,而是和html5中的本地存储提供的一个接口

一个完整的例子

html部分

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <title> new document </title> 
 </head>
 <body>
  <button onclick="pgapStorage()">pgapStorage</button>
 </body>
<script type="text/javascript" src="/blog_article/cordova-2.1.0.js"></script>
  <script type="text/javascript" src="/blog_article/pgapstorage.js"></script>
</html>

js部分

function pgapStorage(){
	//创建或者打开数据库,大小100000 bytes
	var dbOne = window.openDatabase("myDataBase","1.0","phonegapdatabase",100000);
	
	//将事物对象SQLTransaction传给createATable函数,如果发生错误将SQLError对象传给errorCreateTable函数
	dbOne.transaction(createATable, errorCreateTableTrans, successCreateTableTrans);
}
//执行回调函数createATable,创建表MyTab并且插入数据
function createATable(trans){
	 trans.executeSql('DROP TABLE IF EXISTS MyTab');
	 trans.executeSql('CREATE TABLE IF NOT EXISTS MyTab (id unique, data)');
	 trans.executeSql('INSERT INTO MyTab (id, data) VALUES (1, "First row")');
	 trans.executeSql('INSERT INTO MyTab (id, data) VALUES (2, "Second row")');
}
//dbOne.transaction()执行失败后执行,并传递SQLError对象
function errorCreateTableTrans(err){
	alert("err code:"+err.code+"err message:"+err.message);
}

//dbOne.transaction()执行成功后会执行
function successCreateTableTrans(){
	alert("successfully");	
	var dbOne = window.openDatabase("myDataBase","1.0","phonegapdatabase",100000);
	//创建新的事物对象,并传递给回调函数
	dbOne.transaction(queryMyTab,successQueryMyTabTrans,errorQueryMyTabTrans);
}

function successQueryMyTabTrans(){
	alert("successQueryMyTabTrans");
}
function errorQueryMyTabTrans(){
	alert("err code:"+err.code+"err message:"+err.message);
}
//查询
function queryMyTab(trans){
	//查询成功后执行successQueryMyTab回调函数,失败执行errorQueryMyTab函数
	trans.executeSql('SELECT * FROM MyTab', [], successQueryMyTab, errorQueryMyTab);
}
//executeSql执行成功后执行,并将SQLTransaction、SQLResultSet两个对象传递给函数  successQueryMyTab
function successQueryMyTab(trans,results){
	var len = results.rows.length;
	alert(len);
	//利用弹出框显示查询的结果
	for (var i=0; i<len; i++){
            alert("Row = " + i + " ID = " + results.rows.item(i).id + " Data =  " + results.rows.item(i).data);
        }	
}
//executeSql()执行失败后执行
function errorQueryMyTab(err){
	alert("err code:"+err.code+"err message:"+err.message);
}



    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3