@page "/database-connection" @using DataConnection.Enums @using DataConnection.Interfaces @inject Data.DatabaseConnectionService DatabaseService @inject IJSRuntime JSRuntime Connessione al Database

Connessione al Database

Configurazione connessione
@if (DatabaseService.ErrorMessage != null) {
@DatabaseService.ErrorMessage
}
@if (DatabaseService.IsConnected) {
Database Disponibili
@if (!string.IsNullOrEmpty(DatabaseService.SelectedDatabase) && databaseInfo != null) {
Dettagli Database
Nome @databaseInfo?.Name
Dimensione @databaseInfo?.SizeMB MB
Data Creazione @databaseInfo?.CreationDate.ToString("dd/MM/yyyy HH:mm")
Stato @databaseInfo?.Status
Proprietario @databaseInfo?.Owner
}
}
@if (showSchemaInfo) {
Schema del Database: @DatabaseService.SelectedDatabase
@if (schemaInfo != null && schemaInfo.Count > 0) {
@foreach (var table in schemaInfo) { }
Tabella Colonne
@table.Key
    @foreach (var column in table.Value) {
  • @column.Name (@column.DataType) @if (column.IsPrimaryKey) { PK } @if (column.IsForeignKey) { FK → @column.ReferencedTable }
  • }
} else {
Nessuna informazione sullo schema disponibile.
}
} @code { private bool isLoading = false; private bool isConnecting = false; private bool showSchemaInfo = false; private DatabaseInfo databaseInfo; private IDictionary> schemaInfo; protected override async Task OnInitializedAsync() { // Puoi impostare valori predefiniti, magari da configurazione DatabaseService.ConnectionString = "Server=localhost;User Id=sa;Password=password;TrustServerCertificate=True"; } private async Task TestConnection() { try { isLoading = true; showSchemaInfo = false; databaseInfo = null; await DatabaseService.TestConnectionAsync(); if (DatabaseService.IsConnected) { await DatabaseService.GetDatabasesInfoAsync(); } } catch (Exception ex) { await JSRuntime.InvokeVoidAsync("console.error", "Errore connessione:", ex.Message); } finally { isLoading = false; } } private async Task ConnectToDatabase() { if (string.IsNullOrEmpty(DatabaseService.SelectedDatabase)) return; try { isConnecting = true; showSchemaInfo = false; // Ottieni informazioni sul database selezionato if (DatabaseService.DatabasesInfo.TryGetValue(DatabaseService.SelectedDatabase, out var dbInfo)) { databaseInfo = dbInfo; } // Crea il database manager e connettiti al database selezionato var databaseManager = DatabaseService.GetDatabaseManager(); // Verifica la connessione al database specifico if (!await databaseManager.TestConnectionAsync()) { throw new Exception($"Non è possibile connettersi al database {DatabaseService.SelectedDatabase}"); } // Recupera le informazioni sullo schema (tabelle e colonne) schemaInfo = await databaseManager.GetDatabaseSchemaAsync(); showSchemaInfo = true; } catch (Exception ex) { await JSRuntime.InvokeVoidAsync("console.error", "Errore connessione database:", ex.Message); //DatabaseService.ErrorMessage = $"Errore nella connessione al database: {ex.Message}"; showSchemaInfo = false; } finally { isConnecting = false; } } }