Stivenhui 发表于 2014-12-12 14:34:41

executeSql操作返回值

本人前段时间试验了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 ?
求大神为我指点迷津,受到影响的行数的返回值是什么?

Stivenhui 发表于 2015-2-11 23:25:01

rowsAffected

kukumantou 发表于 2015-5-1 14:14:35

很不错,不错,学习学习。跨平台得顶起

adophper 发表于 2015-5-2 10:08:30

人不错,学习学习 感觉phonegap+html越来越火了。

liuwen718 发表于 2015-5-1 17:10:20

好东西啊,谢谢分享 感谢phonegap中文网

Guoyucheng 发表于 2015-5-2 14:47:10

非常好 感谢 开始学习html5 app开发了

liuwen718 发表于 2015-5-1 14:24:23

html5 是趋势
页: [1]
查看完整版本: executeSql操作返回值