Qual è il modo migliore per consentire a un utente di specificare un server SQL e un database da un'applicazione Windows?

0

Sto lavorando alla creazione di un'applicazione Windows che richiederà una connessione ad almeno due diversi database di Microsoft SQL Server (ad esempio, un'origine e una destinazione), che possono o meno essere sullo stesso server.

Quindi, nelle impostazioni dell'applicazione, vorrei che l'utente fosse in grado di specificare sia i server coinvolti, sia i database di origine e di destinazione. Ho fatto un po 'di ricerche e ho trovato immediatamente questo articolo su Code Project:

link

Utilizza qualcosa di cui non ero a conoscenza in precedenza chiamato, SQL Server Management Objects:

link

Ad ogni modo, mi chiedo se SMO sia il modo migliore per gestire stabilire connessioni a fonti di dati che non sono note a me, ma che saranno conosciute dall'utente dell'applicazione. Parte della ragione che sto chiedendo è che la maggior parte delle informazioni che trovo sembra risalire a circa 5 anni fa e voglio assicurarmi che oggi non ci sia un modo migliore per farlo.

Dettagli tecnici: sto cercando di costruirlo con Windows Form o come applicazione WPF e avrò a che fare con Microsoft SQL Server 2008 R2 e versioni successive (probabilmente 2012 e potenzialmente 2014).

Grazie in anticipo per eventuali consigli, pensieri o suggerimenti.

    
posta Bill Kron 30.10.2014 - 19:15
fonte

2 risposte

2

Se vuoi permettere agli utenti di scoprire server / database sulla rete, SMO è la strada da percorrere. Se si desidera consentire loro di immettere informazioni di connessione note (a loro), è sufficiente raccogliere le informazioni in un modulo e utilizzare un SqlConnectionStringBuilder . Ecco un bell'articolo che mostra come utilizzarlo

using System.Data.SqlClient;

private void CreateConnectionString()
{
  SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();

  builder.DataSource = "(local)";
  builder.InitialCatalog = "Northwind";
  builder.UserID = "user1";
  builder.Password = "P@ssw0rd";

  MessageBox.Show(builder.ConnectionString);
}

This is a pretty easy class to use. You can just fill in the basic information such as the DataSource, InitialCatalog, the UserId and Password and it will create a connection string for you. The output from the above code will be: "Data Source=(local);Initial Catalog=Northwind;User ID=user1;Password=p@ssword".

To add on additional keywords for your connection string you may use the Add method. This method takes the keyword and the value and will add them in the appropriate format to your connection string.

As mentioned, each ADO.NET data provider supplies one of these classes. For example, if you are using Oracle, you would use the System.Data.OracleClient namespace, then use the OracleConnectionStringBuilder.

The ConnectionStringBuilder class allows you to parse the individual elements of a connection string and put them into the corresponding properties in the ConnectionStringBuilder. In the following example you take an existing connection string like the one shown in the code below and place it into the ConnectionString property of the ConnectionStringBuilder. The ConnectionStringBuilder will then break it into the appropriate properties.

    
risposta data 30.10.2014 - 19:46
fonte
-1

Per costruire sulla soluzione di @ Mike, ecco come ho risolto un problema simile

Public Con_Str As String

    Function Get_Con_Str()

        If .......Write yo code here...... Then
            Con_Str= "Initial Catalog=databasename1;" & "Data Source=datasource1;Integrated Security=True;"

        Else
           Con_Str= "Initial Catalog=databasename2;" & "Data Source=datasource2;Integrated Security=True;"
        End If
        Return Con_Str
    End Function
    
risposta data 07.01.2015 - 11:08
fonte

Leggi altre domande sui tag