You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Data Studio扩展如何监听查询完成事件并获取执行结果?

针对Azure Data Studio扩展相关问题的解答

1. 是否存在查询执行完成后可监听的事件

存在官方原生支持的监听事件,无需通过按键绑定绕路实现。你可以使用Azure Data Studio扩展API中azdata.querymanagement命名空间下的onQueryComplete事件,该事件会在任意查询执行完成后触发,回调参数包含查询执行状态、结果集、连接信息、执行耗时等完整元数据。
示例注册代码:

import * as azdata from 'azdata';
import * as vscode from 'vscode';

export function activate(context: vscode.ExtensionContext) {
    // 注册查询完成监听器
    const queryCompleteDisposable = azdata.querymanagement.onQueryComplete(async (event) => {
        // event为查询完成的上下文对象
        if (event.status === azdata.QueryExecutionStatus.Succeeded) {
            // 查询执行成功,在此处插入你的自定义逻辑
            console.log(`查询执行完成,共返回${event.resultSetCount}个结果集`);
            // 可通过event.results获取具体结果数据
        }
    });
    // 加入扩展的释放队列,扩展卸载时自动销毁监听器
    context.subscriptions.push(queryCompleteDisposable);
}

如果只需要监听你的扩展触发的查询,可在触发查询时记录当前会话/编辑器标识,在回调中做匹配过滤即可。

2. 调用executeCommand('runQueryKeyboardAction')获取查询结果的方法

runQueryKeyboardAction是ADS的内置快捷命令,设计上没有返回值,直接调用无法拿到执行结果,有两种更稳定的实现方案:

  • 方案1:搭配onQueryComplete事件做关联
    调用runQueryKeyboardAction前,先记录当前活动查询编辑器的URI、当前连接会话ID,在onQueryComplete的回调中匹配对应标识的查询事件,即可获取本次触发的查询结果。
  • 方案2:替换为官方公开的查询执行API
    不调用内置的按键命令,直接使用azdata.querymanagement.runQuery执行查询,该API为异步方法,执行完成后会直接返回查询结果,可控性更高:
    const activeQueryEditor = azdata.queryeditor.getActiveQueryEditor();
    if (activeQueryEditor) {
        // 执行当前编辑器内的全部查询,也可传入参数指定执行选中的文本段
        const runResult = await azdata.querymanagement.runQuery(activeQueryEditor.document.uri);
        // 直接从runResult中获取结果信息
        console.log('查询执行结果:', runResult.results);
        // 此处插入你的自定义逻辑
    }
    

如果需要和用户按F5的动作强绑定,可在扩展的package.json中通过contributes.keybindings配置覆盖默认F5绑定,指向你自定义的命令,在自定义命令中先执行查询、再运行你的业务逻辑即可。

内容的提问来源于stack exchange,提问作者Dawid Mikołaj Alejski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 21:42:02