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

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数据转换为数组进行处理,特别适合需要快速读取和操作数据的场景。

相关帖子
滨州市救护车长途跨省转运患者@长途120救护车护送,就近派车
滨州市救护车长途跨省转运患者@长途120救护车护送,就近派车
如果开发商承诺的车位配比未达标,业主可以依据哪些法规进行沟通?
如果开发商承诺的车位配比未达标,业主可以依据哪些法规进行沟通?
mware虚拟机运行速度卡慢原因分析及解决办法
mware虚拟机运行速度卡慢原因分析及解决办法
输卵管造影后出血?这些一定要看
输卵管造影后出血?这些一定要看
滨州市python开源cms二次开发%SEO网络推广,专业建站公司
滨州市python开源cms二次开发%SEO网络推广,专业建站公司
温州市长途120救护车出租&长途救护车租车服务
温州市长途120救护车出租&长途救护车租车服务
2026年,我们对食品保质期的普遍认知是否存在哪些需要更新的误区?
2026年,我们对食品保质期的普遍认知是否存在哪些需要更新的误区?
如何快速判断家中是否发生了轻微的燃气泄漏,有哪些实用自查方法?
如何快速判断家中是否发生了轻微的燃气泄漏,有哪些实用自查方法?
除了常见的五险一金,还有哪些因素会直接影响你最终的实发工资?
除了常见的五险一金,还有哪些因素会直接影响你最终的实发工资?
合肥市b2b网站开发&装修网站建设,收费透明
合肥市b2b网站开发&装修网站建设,收费透明
失信被执行人名单的公示会对个人未来的信用记录产生哪些长期影响?
失信被执行人名单的公示会对个人未来的信用记录产生哪些长期影响?
除了地震和火灾,2026年我们还需要为哪些新型或高发灾害进行针对性演习?
除了地震和火灾,2026年我们还需要为哪些新型或高发灾害进行针对性演习?
门诊共济政策实施后,去医院看门诊的报销流程和以前有什么不同?
门诊共济政策实施后,去医院看门诊的报销流程和以前有什么不同?
无锡市重症病人转院租救护车跑长途@救护车转院护送病人返乡
无锡市重症病人转院租救护车跑长途@救护车转院护送病人返乡
什么是竞业限制协议,它对普通员工的职业选择有哪些具体约束?
什么是竞业限制协议,它对普通员工的职业选择有哪些具体约束?
襄阳市长途救护车出租&救护车租车护送病人转院
襄阳市长途救护车出租&救护车租车护送病人转院
卫星通信功能逐渐融入民用电话卡,它将如何改变偏远地区的通信体验?
卫星通信功能逐渐融入民用电话卡,它将如何改变偏远地区的通信体验?
衢州市专业网站建设公司&crm系统开发,优秀设计团队
衢州市专业网站建设公司&crm系统开发,优秀设计团队
益阳市网站建设推广%crm系统开发,一站式建站服务
益阳市网站建设推广%crm系统开发,一站式建站服务
面对突发灾害,公众通过哪些渠道能最快接收到官方发布的预警信息?
面对突发灾害,公众通过哪些渠道能最快接收到官方发布的预警信息?