PhoneGap中文网

 找回密码
 立即注册
查看: 17622|回复: 6
打印 上一主题 下一主题

executeSql操作返回值

[复制链接]

22

主题

35

帖子

192

积分

注册会员

Rank: 2

积分
192
跳转到指定楼层
楼主
发表于 2014-12-12 14:34:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人前段时间试验了phonegap的数据库操作.试验过程中遇到了一些问题!
以下是代码!
<!DOCTYPE>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title></title>
<script type="text/javascript" src="js/cordova.js"></script>
<script type="text/javascript">
document.addEventListener("deviceready",onDeviceready,false);

        // phonegap加载完毕
         function onDeviceready() {
                 var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
                 //db.changeVersion("1.0", "2.0");
                 //执行一项事务
                 db.transaction(populateDB, errorCB, successCB);
         }
         
        // 填充数据库的事务
         function populateDB(tx) {
                 tx.executeSql('DROP TABLE IF EXISTS DEMO');
                 tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
                 tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
                 tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
         }
         
        // 事务执行出错后调用的回调函数
         function errorCB(err) {
                 alert(" SQL Error: "+err);
         }
         
        // 事务执行成功后调用的回调函数
         function successCB() {
                 alert("Create Success!");
                 //打开数据库
                 var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
                 //进行查询
                 db.transaction(searchData, SearchErr);
         }
         //查询的SQL语句
         function searchData(tx){
                 tx.executeSql('SELECT * FROM DEMO',[],viewData,viewErr);
         }
         
        //展示数据
         function viewData(tx,results){
                 alert("Display data!");
                 //insertId
                 //alert(results.insertId);
                 //rowAffected
                 alert(results.rowAffected);
                 //rows
                 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);
                 }
                 
        }
         
        //展示数据时出错
         function viewErr(Err){
                 alert("Display data reeor"+Err.code);
         }
         
        //查询时出错
         function SearchErr(Err){
                 alert("Select Err"+Err.code);
         }
         //更新数据
         function update(){
                 alert("Update Data!");
                 //打开数据库
                 var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
                 //添加事务进行更改
                 db.transaction(UpdateData, SearchErr);
         }
         //
         function UpdateData(tx){
                 //更新操作的事务
                 tx.executeSql('UPDATE DEMO SET data ="LIUJIANHUI" WHERE id = 1 ',[],UpdateRes,viewErr);
         }
         //更新结果
         function UpdateRes(tx,results){
         
                alert(tx);
                 alert(results);
                 //
                 alert(results.rowAffected);
         }
         

</script>
</head>
<body>
<div>
<div><span>Name:</span><input type="text" id="name"></div>
<button id="updte" onclick="update();">Update</button>
<button id="select"onclick="successCB();">Select</button>
</div>
</body>
</html>
官方相关的API指出:
当SQLTransaction对象的executeSql方法被调用,将会触发executeSql中设定的回调函数并返回一个SQLResultSet对象。

属性:•insertId:SQLResultSet对象通过SQL语句插入到数据库的行记录的行ID。[译注:如果插入多行的时候,返回最后一个行的ID]
•rowAffected:被SQL语句改变的记录行数,如果语句没有影响任何行则设置为0。
•rows:是一个SQLResultSetRowList对象,表示返回的多条记录。如果没有返回任何记录,则此对象为空。
     当你调用SQLTransaction对象的executeSql方法,将会触发executeSql中设定的回调函数并返回一个SQLResultSet对象。该结果对象包含三个属性:第一个是insertID返回成功的SQL插入语句所插入行的ID,如果SQL语句不是插入语句则insertID将不被设定;第二个是rowAffected,在SQL查询操作时此属性总是0,当插入或更新操作时此属性返回受到影响的行数;最后一个属性是SQLResultSetList类型,返回SQL查询语句的返回数据。
那么问题来了!我的手机是android2.3.6版本的三星机器,
(1)SQL语句为查询时,insertID将不被设定.调用将会报错! 这正常吗?
(2)SQL语句为更新操作时,rowAffected返回受到影响的行数,可是调用的结果却是undefined ?
求大神为我指点迷津,受到影响的行数的返回值是什么?
回复

使用道具 举报

22

主题

35

帖子

192

积分

注册会员

Rank: 2

积分
192
沙发
 楼主| 发表于 2015-2-11 23:25:01 | 只看该作者
rowsAffected
回复 支持 反对

使用道具 举报

0

主题

20

帖子

61

积分

注册会员

Rank: 2

积分
61
板凳
发表于 2015-5-1 14:14:35 | 只看该作者
很不错,不错,学习学习。跨平台得顶起
回复 支持 反对

使用道具 举报

0

主题

17

帖子

52

积分

注册会员

Rank: 2

积分
52
地板
发表于 2015-5-2 10:08:30 | 只看该作者
人不错,学习学习 感觉phonegap+html越来越火了。
回复 支持 反对

使用道具 举报

0

主题

18

帖子

60

积分

注册会员

Rank: 2

积分
60
5#
发表于 2015-5-1 17:10:20 | 只看该作者
好东西啊,谢谢分享 感谢phonegap中文网
回复 支持 反对

使用道具 举报

0

主题

16

帖子

51

积分

注册会员

Rank: 2

积分
51
6#
发表于 2015-5-2 14:47:10 | 只看该作者
非常好 感谢 开始学习html5 app开发了
回复 支持 反对

使用道具 举报

0

主题

18

帖子

60

积分

注册会员

Rank: 2

积分
60
7#
发表于 2015-5-1 14:24:23 | 只看该作者
html5 是趋势
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

ionic4视频教程

Archiver|手机版|小黑屋| PhoneGap中文网 ( 京ICP备13027796号-1 )  

GMT+8, 2024-11-23 08:23 , Processed in 0.089647 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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