您好!欢迎访问家园网-www.jy.wang!

家园网

result.rows.item(i)的item是啥

网络 作者:本站 点击:


item是啥?

function showAllData() {//从数据库中提取留言信息
	db.transaction(function (tx) {
		tx.executeSql('CREATE TABLE IF NOT EXISTS MsgData(name TEXT,msg TEXT,time INTEGER)', []);
		tx.executeSql('SELECT * FROM MsgData', [], function (tx, result) {
			removeAllData();
			for (var i = 0; i < result.rows.length; i++) {
				showData(result.rows.item(i));
			}
		});
	});
}


item 是什么?

item 是 Web SQL Database 中 SQLResultSetRowList 对象的一个内置方法,不是自己定义的,是浏览器 API 规定好的。


详细解释

1. result 是什么?

在 executeSql 的成功回调函数中:

javascript

function (tx, result) {
    // result 是 SQLResultSet 对象}

result 是一个 SQLResultSet 对象,它包含以下属性:

  • rows:一个 SQLResultSetRowList 对象,包含查询返回的所有行

  • rowsAffected:受影响的行数(对于 INSERT、UPDATE、DELETE)

  • insertId:最后插入行的 ID(对于自增字段)


2. result.rows 是什么?

result.rows 是 SQLResultSetRowList 对象,它有两个重要成员:

  • length 属性:返回结果集的行数

  • item(index) 方法:返回指定索引处的行数据(作为对象)


3. item() 方法的使用

javascript

for (var i = 0; i < result.rows.length; i++) {
    showData(result.rows.item(i));}

  • result.rows.item(i) 返回第 i 行数据,是一个对象

  • 对象的属性名就是表的列名:namemsgtime

  • 所以 showData() 函数中可以这样使用:

    javascript

    function showData(row) {
        row.name  // 访问姓名
        row.msg   // 访问留言内容
        row.time  // 访问时间戳}


4. 为什么这样设计?

Web SQL Database 的 API 设计参考了传统的数据库 API(如 JDBC 的 ResultSet),使用 item() 方法是为了:

  • 明确的 API 接口:通过方法而不是直接索引访问

  • 兼容性考虑:虽然早期浏览器也支持 result.rows[i] 直接访问,但 item() 是标准方法


5. 实际对比

这两种写法在大多数浏览器中都能工作:

javascript

// 标准写法(使用 item)showData(result.rows.item(i));// 简写(很多浏览器也支持)showData(result.rows[i]);

但为了代码的规范性和兼容性,通常使用 item() 方法。


总结

item 是 Web SQL Database API 规定好的内置方法,不是自定义的。它用于从结果集对象中按索引取出某一行数据,返回一个包含该行所有字段的对象。

标签: