2012-12-04 11 views
9

Wpisuję nazwę użytkownika i hasło źródła poprzez pole tekstowe i chcę listę bazy danych powinny być wymienione w polu kombi, tak aby wszystkie cztery opcje nazwa użytkownika, identyfikator użytkownika, hasło i nazwa bazy danych mogą być wybierane przez użytkownika do wykonywania połączeń. Bazy danych mają być pobierane z innego systemu, jak dla użytkownika. Użytkownik wejdzie na IP, identyfikator użytkownika oraz hasło i powinny one otrzymać listę bazy danych w polu kombi, dzięki czemu mogą oni wybrać odpowiednią bazę danych i wykonać połączenieJak uzyskać listę wszystkich baz danych z serwera sql w combobox przy użyciu C# .net

private void frmConfig_Load(object sender, EventArgs e) 
{ 
     try 
     { 
      string Conn = "server=servername;User Id=userid;" + "pwd=******;"; 
      con = new SqlConnection(Conn); 
      con.Open(); 

      da = new SqlDataAdapter("SELECT * FROM sys.database", con); 
      cbSrc.Items.Add(da); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 

staram się to zrobić, ale to nie jest generowanie wszelkie dane

+1

Jaki system bazy danych używasz? –

+0

Co tak naprawdę utknęło? Jak zdobyć listę baz danych? lub, zastanawiając się, jak korzystać z pola kombi? (Jeśli jest to jedno i drugie, lepiej podzielić to na dwa pytania) –

+0

Używam serwera sql 2008 –

Odpowiedz

26

sys.databases

SELECT name 
FROM sys.databases; 

Edit:

Polecam używanie IDataReader, wracając listę i buforowania t on wyniki. Możesz po prostu powiązać listę rozwijaną z wynikami i pobrać tę samą listę z pamięci podręcznej, gdy zajdzie taka potrzeba.

public List<string> GetDatabaseList() 
{ 
    List<string> list = new List<string>(); 

    // Open connection to the database 
    string conString = "server=xeon;uid=sa;pwd=manager; database=northwind"; 

    using (SqlConnection con = new SqlConnection(conString)) 
    { 
     con.Open(); 

     // Set up a command with the given query and associate 
     // this with the current connection. 
     using (SqlCommand cmd = new SqlCommand("SELECT name from sys.databases", con)) 
     { 
      using (IDataReader dr = cmd.ExecuteReader()) 
      { 
       while (dr.Read()) 
       { 
        list.Add(dr[0].ToString()); 
       } 
      } 
     } 
    } 
    return list; 

} 
+0

Bazy danych należy pobrać z innego systemu, jak dla użytkownika.Użytkownik wejdzie na IP, identyfikator użytkownika oraz hasło i powinny one otrzymać listę bazy danych w polu kombi, dzięki czemu mogą oni wybrać odpowiednią bazę danych i wykonać połączenie –

+0

To nie była dokładna odpowiedź, ale dostałem odpowiedź z pomocą ur przykład Dzięki Chris –

3

można używać na następujące pytania:

  • EXEC sp_databases
  • SELECT * FROM sys.databases

Serge

3

najpierw dodać następujące zespoły:

  • Microsoft.SqlServer.ConnectionInfo.dll
  • Microsoft.SqlServer.Management.Sdk.Sfc.dll
  • Microsoft.SqlServer.Smo.dll

z

C: \ Program Files \ Microsoft SQL Server \ 100 \ SDK \ Assemblies \

a następnie użyj poniższego kodu :

var server = new Microsoft.SqlServer.Management.Smo.Server("Server name"); 

foreach (Database db in server.Databases) { 
    cboDBs.Items.Add(db.Name); 
} 
+0

więcej informacji można zobaczyć [to pytanie] (http://stackoverflow.com/questions/147659/get-list-of-databases-from-sql-server) – Amir

+1

próbowałem ale min odwołać się ConnectionInfo .dll "Nie mogę znaleźć typu System.SystemException w module CommonLanguageRuntimeLibrary." Błąd kompilacji. – Mastro

+0

dlaczego to rozwiązanie nie działa w projekcie ASP.net MVC? – Motaz

0
using (var connection = new System.Data.SqlClient.SqlConnection("ConnectionString")) 
    { 
     connection.Open(); 
     var command = new System.Data.SqlClient.SqlCommand(); 
     command.Connection = connection; 
     command.CommandType = CommandType.Text; 
     command.CommandText = "SELECT name FROM master.sys.databases"; 

     var adapter = new System.Data.SqlClient.SqlDataAdapter(command); 
     var dataset = new DataSet(); 
     adapter.Fill(dataset); 
     DataTable dtDatabases = dataset.Tables[0]; 
    } 
Powiązane problemy