欢迎光临本地信息咨询网
详情描述

GetRows方法获取记录集数据时,你可以将ADODB.RecordSet对象转换为一个二维数组。以下是具体示例和说明:

1. 基础使用示例

<%@ Language=JScript %>
<%
// 创建连接和记录集
var conn = Server.CreateObject("ADODB.Connection");
var rs = Server.CreateObject("ADODB.Recordset");

// 连接数据库(示例使用Access)
conn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("db.mdb"));

// 执行查询
rs.Open("SELECT id, name, email FROM users", conn);

// 使用GetRows获取数据
var data = rs.GetRows();

// 关闭连接
rs.Close();
conn.Close();

// 处理数据
if (data != null) {
    // data[0] 包含第一列(id)的所有值
    // data[1] 包含第二列(name)的所有值
    // data[2] 包含第三列(email)的所有值

    var rowCount = data[0].length; // 获取行数
    var colCount = data.length;    // 获取列数

    for (var i = 0; i < rowCount; i++) {
        Response.Write("ID: " + data[0][i] + "<br>");
        Response.Write("Name: " + data[1][i] + "<br>");
        Response.Write("Email: " + data[2][i] + "<br><br>");
    }
}
%>

2. 指定返回行数

<%
// 只获取前10行
var data = rs.GetRows(10);

// 从第5行开始获取10行(需要先设置游标类型)
rs.CursorLocation = 3; // adUseClient
var data = rs.GetRows(10, 5);
%>

3. 指定字段

<%
// 只获取特定字段
var fields = new Array(0, 2); // 获取第1列和第3列
var data = rs.GetRows(-1, 0, fields);

// 或使用字段名
var fields = new Array("id", "email");
var data = rs.GetRows(-1, 0, fields);
%>

4. 实用封装函数

<%
function RecordsetToArray(rs) {
    if (rs.EOF || rs.BOF) {
        return null;
    }

    var data = rs.GetRows();
    var result = new Array();

    // 转换为对象数组(更易读)
    var fields = new Array();
    for (var i = 0; i < rs.Fields.Count; i++) {
        fields.push(rs.Fields(i).Name);
    }

    for (var row = 0; row < data[0].length; row++) {
        var obj = new Object();
        for (var col = 0; col < fields.length; col++) {
            obj[fields[col]] = data[col][row];
        }
        result.push(obj);
    }

    return result;
}

// 使用示例
var rs = conn.Execute("SELECT * FROM products");
var products = RecordsetToArray(rs);

for (var i = 0; i < products.length; i++) {
    Response.Write(products[i].ProductName + ": $" + products[i].Price);
}
%>

5. 注意事项

<%
// 1. GetRows后记录集位置会改变
rs.MoveFirst(); // 如果需要重新遍历,先重置位置

// 2. 处理空记录集
if (!rs.EOF) {
    var data = rs.GetRows();
} else {
    Response.Write("没有数据");
}

// 3. 内存管理 - 处理大数据集
var maxRows = 1000;
var data = rs.GetRows(maxRows); // 限制返回行数

// 4. 字段类型处理
var data = rs.GetRows();
for (var i = 0; i < data[0].length; i++) {
    // 检查是否为日期类型
    if (data[2][i] instanceof Date) {
        Response.Write(data[2][i].toLocaleDateString());
    }
}
%>

6. 性能优化示例

<%
// 批量处理大量数据
var batchSize = 500;
do {
    var data = rs.GetRows(batchSize);

    if (data != null && data[0].length > 0) {
        ProcessBatch(data); // 自定义处理函数
    }

} while (!rs.EOF);

function ProcessBatch(data) {
    // 批量处理逻辑
    for (var i = 0; i < data[0].length; i++) {
        // 处理每一行数据
    }
}
%>

重要说明:

GetRows返回的数组结构:data[column][row],先列后行 释放资源:使用后及时关闭记录集和连接 错误处理:始终包含错误处理代码 数据类型:JScript中所有值都是Variant类型

这样可以高效地将Recordset数据转换为数组进行处理,特别适合需要快速读取和操作数据的场景。

相关帖子
过桥垫资让与担保效力?名为买卖实为借贷
过桥垫资让与担保效力?名为买卖实为借贷
2026年新的食品标识规定,是否让预制菜配料表更透明易懂?
2026年新的食品标识规定,是否让预制菜配料表更透明易懂?
房产抵押类银行贷款流程,梳理评估、抵押登记到放款全步骤
房产抵押类银行贷款流程,梳理评估、抵押登记到放款全步骤
2026年社保缴费基数上下限是如何确定的,对个人缴费有何影响?
2026年社保缴费基数上下限是如何确定的,对个人缴费有何影响?
滨州市救护车长途跨省转运患者@长途120救护车护送,就近派车
滨州市救护车长途跨省转运患者@长途120救护车护送,就近派车
如果开发商承诺的车位配比未达标,业主可以依据哪些法规进行沟通?
如果开发商承诺的车位配比未达标,业主可以依据哪些法规进行沟通?
马上消费金融利率,安逸花借款利息计算
马上消费金融利率,安逸花借款利息计算
在涉及遗产继承或抚养权纠纷时,出生医学证明能提供怎样的法律依据?
在涉及遗产继承或抚养权纠纷时,出生医学证明能提供怎样的法律依据?
智能玩具联网功能背后的数据安全与儿童隐私保护,家长应了解哪些知识?
智能玩具联网功能背后的数据安全与儿童隐私保护,家长应了解哪些知识?
个人债务优化重组申请流程有哪些步骤?从申请到落地全解析
个人债务优化重组申请流程有哪些步骤?从申请到落地全解析
更年期后,女性在职业生涯和个人兴趣发展上可能迎来哪些新机遇?
更年期后,女性在职业生涯和个人兴趣发展上可能迎来哪些新机遇?
汽车贷款期限包含宽限期吗?还款日与期限的计算
汽车贷款期限包含宽限期吗?还款日与期限的计算
除了便捷性,预制菜在执行的食品安全标准上与餐厅现做菜有何异同?
除了便捷性,预制菜在执行的食品安全标准上与餐厅现做菜有何异同?
写字楼门店抵押贷款负债率高怎么办?降低负债率提高批贷成功率
写字楼门店抵押贷款负债率高怎么办?降低负债率提高批贷成功率
商铺门面房抵押贷款保险必须买吗?财产保险与抵押贷款保险区别
商铺门面房抵押贷款保险必须买吗?财产保险与抵押贷款保险区别
面对2026年的市场环境,独立开发者应聚焦解决用户的哪些痛点?
面对2026年的市场环境,独立开发者应聚焦解决用户的哪些痛点?
别墅抵押贷款LPR怎么影响利率?LPR调整与月供变化关系解读
别墅抵押贷款LPR怎么影响利率?LPR调整与月供变化关系解读
如何通过角色扮演类玩具,有效培养孩子的同理心与情绪管理能力?
如何通过角色扮演类玩具,有效培养孩子的同理心与情绪管理能力?
别墅抵押贷款可以抵押给典当行吗?典当行别墅抵押贷款利弊
别墅抵押贷款可以抵押给典当行吗?典当行别墅抵押贷款利弊
公司经营贷款集团授信流程,企业集团统一授信
公司经营贷款集团授信流程,企业集团统一授信