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

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救护车护送,就近派车
如果开发商承诺的车位配比未达标,业主可以依据哪些法规进行沟通?
如果开发商承诺的车位配比未达标,业主可以依据哪些法规进行沟通?
mware虚拟机运行速度卡慢原因分析及解决办法
mware虚拟机运行速度卡慢原因分析及解决办法
自由职业者或灵活就业人员,是否可以为自己设立交通通讯补贴以降低税负?
自由职业者或灵活就业人员,是否可以为自己设立交通通讯补贴以降低税负?
2026年,社会舆论和年轻人对彩礼“限高”政策的普遍看法是什么?
2026年,社会舆论和年轻人对彩礼“限高”政策的普遍看法是什么?
计算经济补偿金时,工资基数是指应发工资还是实发工资?
计算经济补偿金时,工资基数是指应发工资还是实发工资?
到2026年,社保“第六险”的评估标准是否更加统一和规范了?
到2026年,社保“第六险”的评估标准是否更加统一和规范了?
贷款期间房产信息变更,讲解信息修改及二次抵押备案调整流程
贷款期间房产信息变更,讲解信息修改及二次抵押备案调整流程
从千兆宽带降级到百兆,运营商要求缴纳高额设备调测费是否合理?
从千兆宽带降级到百兆,运营商要求缴纳高额设备调测费是否合理?
智能汽车记录的行车轨迹信息是否属于个人隐私信息范畴
智能汽车记录的行车轨迹信息是否属于个人隐私信息范畴
如何区分是为了实际需求购物,还是为了短暂的情绪抚慰而进行消费?
如何区分是为了实际需求购物,还是为了短暂的情绪抚慰而进行消费?
2026年,企业的加班审批制度如果过于严格,是否会催生更多隐形加班?
2026年,企业的加班审批制度如果过于严格,是否会催生更多隐形加班?
企业内部非正式的社交活动,如何可能加深某些群体的“隐性”排斥感?
企业内部非正式的社交活动,如何可能加深某些群体的“隐性”排斥感?
对于有过敏性鼻炎的人,在特定季节应如何护理以减少鼻子出血风险?
对于有过敏性鼻炎的人,在特定季节应如何护理以减少鼻子出血风险?
小满节气“苦菜秀”的说法从何而来,这种植物背后有哪些有趣的故事与文化?
小满节气“苦菜秀”的说法从何而来,这种植物背后有哪些有趣的故事与文化?
对维修基金的使用情况有疑问,业主可以通过哪些合法途径进行监督?
对维修基金的使用情况有疑问,业主可以通过哪些合法途径进行监督?
2026年国际原油市场价格波动,主要受全球哪些非政治性供需因素影响?
2026年国际原油市场价格波动,主要受全球哪些非政治性供需因素影响?