API di estendibilità Azure Data Studio
Importante
Azure Data Studio verrà ritirato il 28 febbraio 2026. È consigliabile usare Visual Studio Code. Per altre informazioni sulla migrazione a Visual Studio Code, vedere Che cosa accade in Azure Data Studio?
Azure Data Studio mette a disposizione un'API che le estensioni possono usare per interagire con altre parti di Azure Data Studio, ad esempio Esplora oggetti. Queste API sono disponibili dal file src/sql/azdata.d.ts
e sono descritte di seguito.
Gestione delle connessioni
azdata.connection
Funzioni di primo livello per la gestione delle connessioni
getCurrentConnection(): Thenable<azdata.connection.Connection>
Ottiene la connessione corrente in base all'editor attivo o alla selezione in Esplora oggetti.getActiveConnections(): Thenable<azdata.connection.Connection[]>
Ottiene un elenco di tutte le connessioni utente attive. Restituisce un elenco vuoto se non sono presenti connessioni di questo tipo.getCredentials(connectionId: string): Thenable<{ [name: string]: string }>
Ottiene un dizionario che contiene le credenziali associate a una connessione. In caso contrario, questi verranno restituiti come parte del dizionario delle opzioni in un oggettodata.connection.Connection
ma rimossi da tale oggetto.
Connessione
-
options: { [name: string]: string }
Dizionario delle opzioni di connessione -
providerName: string
Il nome del provider di connessione (ad esempio "MSSQL") -
connectionId: string
Identificatore univoco della connessione
Codice di esempio
> let connection = azdata.connection.getCurrentConnection();
connection: {
providerName: 'MSSQL',
connectionId: 'd97bb63a-466e-4ef0-ab6f-00cd44721dcc',
options: {
server: 'mairvine-sql-server',
user: 'sa',
authenticationType: 'sqlLogin',
...
},
...
}
> let credentials = azdata.connection.getCredentials(connection.connectionId);
credentials: {
password: 'abc123'
}
Esplora oggetti
azdata.objectexplorer
Funzioni di primo livello per Esplora oggetti
getNode(connectionId: string, nodePath?: string): Thenable<azdata.objectexplorer.ObjectExplorerNode>
Ottiene un nodo Esplora oggetti corrispondente alla connessione e al percorso specificati. Se non viene specificato alcun percorso, viene restituito il nodo di primo livello per la connessione specificata. Se non è presente alcun nodo nel percorso specificato, restituisceundefined
. Nota: la variabilenodePath
per un oggetto viene generata dal back-end del servizio SQL Tools ed è difficile da creare manualmente. I miglioramenti futuri dell'API consentono di ottenere nodi in base ai metadati forniti sul nodo, ad esempio nome, tipo e schema.getActiveConnectionNodes(): Thenable<azdata.objectexplorer.ObjectExplorerNode>
Ottiene tutti i nodi di connessione di Esplora oggetti attivi.findNodes(connectionId: string, type: string, schema: string, name: string, database: string, parentObjectNames: string[]): Thenable<azdata.objectexplorer.ObjectExplorerNode[]>
Trova tutti i nodi di Esplora oggetti che corrispondono ai metadati specificati. Gli argomentischema
,database
eparentObjectNames
devono essereundefined
quando non sono applicabili.parentObjectNames
è un elenco di oggetti padre non di database, dal livello più alto al più basso in Esplora oggetti, in cui si trova l'oggetto desiderato. Ad esempio, quando si cerca una colonna "column1" appartenente a una tabella "schema1.table1" e al database "database1" con ID di connessioneconnectionId
, chiamarefindNodes(connectionId, 'Column', undefined, 'column1', 'database1', ['schema1.table1'])
. Vedere anche l'elenco dei tipi supportati da Azure Data Studio per impostazione predefinita per questa chiamata API.
ObjectExplorerNode
connectionId: string
ID della connessione in cui si trova il nodonodePath: string
Percorso del nodo, come usato per una chiamata alla funzionegetNode
.nodeType: string
Stringa che rappresenta il tipo del nodonodeSubType: string
Stringa che rappresenta il sottotipo del nodonodeStatus: string
Stringa che rappresenta lo stato del nodolabel: string
Etichetta del nodo come appare in Esplora oggettiisLeaf: boolean
Indica se il nodo è un nodo foglia e pertanto non ha elementi figliometadata: azdata.ObjectMetadata
Metadati che descrivono l'oggetto rappresentato da questo nodoerrorMessage: string
Messaggio visualizzato se il nodo è in stato di erroreisExpanded(): Thenable<boolean>
Indica se il nodo è attualmente espanso in Esplora oggettisetExpandedState(expandedState: vscode.TreeItemCollapsibleState): Thenable<void>
Impostare se il nodo è espanso o compresso. Il nodo non verrà modificato se lo stato è impostato su Nessuno.setSelected(selected: boolean, clearOtherSelections?: boolean): Thenable<void>
Impostare se il nodo è selezionato. SeclearOtherSelections
è true, deselezionare eventuali altre selezioni quando si effettua la nuova selezione. Se false, lasciare le selezioni esistenti.clearOtherSelections
viene impostato su true per impostazione predefinita quandoselected
è true e su false quandoselected
è false.getChildren(): Thenable<azdata.objectexplorer.ObjectExplorerNode[]>
Ottiene tutti i nodi figlio del nodo. Restituisce un elenco vuoto se non sono presenti elementi figlio.getParent(): Thenable<azdata.objectexplorer.ObjectExplorerNode>
Ottiene il nodo padre di questo nodo. Restituisce undefined se non c'è un genitore.
Codice di esempio
private async interactWithOENode(selectedNode: azdata.objectexplorer.ObjectExplorerNode): Promise<void> {
let choices = ['Expand', 'Collapse', 'Select', 'Select (multi)', 'Deselect', 'Deselect (multi)'];
if (selectedNode.isLeaf) {
choices[0] += ' (is leaf)';
choices[1] += ' (is leaf)';
} else {
let expanded = await selectedNode.isExpanded();
if (expanded) {
choices[0] += ' (is expanded)';
} else {
choices[1] += ' (is collapsed)';
}
}
let parent = await selectedNode.getParent();
if (parent) {
choices.push('Get Parent');
}
let children = await selectedNode.getChildren();
children.forEach(child => choices.push(child.label));
let choice = await vscode.window.showQuickPick(choices);
let nextNode: azdata.objectexplorer.ObjectExplorerNode = undefined;
if (choice === choices[0]) {
selectedNode.setExpandedState(vscode.TreeItemCollapsibleState.Expanded);
} else if (choice === choices[1]) {
selectedNode.setExpandedState(vscode.TreeItemCollapsibleState.Collapsed);
} else if (choice === choices[2]) {
selectedNode.setSelected(true);
} else if (choice === choices[3]) {
selectedNode.setSelected(true, false);
} else if (choice === choices[4]) {
selectedNode.setSelected(false);
} else if (choice === choices[5]) {
selectedNode.setSelected(false, true);
} else if (choice === 'Get Parent') {
nextNode = parent;
} else {
let childNode = children.find(child => child.label === choice);
nextNode = childNode;
}
if (nextNode) {
let updatedNode = await azdata.objectexplorer.getNode(nextNode.connectionId, nextNode.nodePath);
this.interactWithOENode(updatedNode);
}
}
vscode.commands.registerCommand('mssql.objectexplorer.interact', () => {
azdata.objectexplorer.getActiveConnectionNodes().then(activeConnections => {
vscode.window.showQuickPick(activeConnections.map(connection => connection.label + ' ' + connection.connectionId)).then(selection => {
let selectedNode = activeConnections.find(connection => connection.label + ' ' + connection.connectionId === selection);
this.interactWithOENode(selectedNode);
});
});
});
API proposte
Abbiamo aggiunto un elenco di API proposte per consentire alle estensioni di visualizzare l'interfaccia utente personalizzata in finestre di dialogo, procedure guidate e schede di documenti, tra le altre funzionalità. Per altre documentazioni, vedere l'file di tipi di API proposto, anche se tenere presente che queste API sono soggette a modifiche in qualsiasi momento. Esempi di come usare alcune di queste API sono disponibili nell'estensione di esempio "subservices".
Contenuto correlato
- Scaricare di Azure Data Studio