2012-12-04 28 views
9

テキストボックスからソース名useridとパスワードを入力しています。データベースリストをコンボボックスに表示して、ユーザ名、ユーザID、パスワード、およびデータベース名は、ユーザが接続を選択するために選択することができる。c#.netを使用してコンボボックス内のSQL Serverからすべてのデータベースのリストを取得する方法

データベースは、ユーザごとに他のシステムから取得される。私はこれを行うにしようとしていますが、それが生成されていないユーザーは、IP、ユーザーIDとパスワードを入力しますと、彼らが必要なデータベースを選択し、接続

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); 
     } 
    } 

を行うことができるように、彼らは、コンボボックスにデータベースのリストを取得する必要があります任意のデータ

+1

何データベースシステムを使用していますか? –

+0

あなたは本当に立ち往生していますか?データベースのリストを取得しますか?または、コンボボックスの使い方を理解していますか? (両方の場合、これを2つの質問に分割する方が良いかもしれません) –

+0

SQL Server 2008を使用しています –

答えて

26

sys.databases

SELECT name 
FROM sys.databases; 

編集:

私はリストとキャッシュトンを返す、のIDataReaderを使用することをお勧めします彼は結果する。結果にドロップダウンをバインドし、必要に応じて同じリストをキャッシュから取り出すことができます。

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

データベースはユーザーごとに他のシステムから取得されます。ユーザーはIP、ユーザーID、およびパスワードを入力し、必要なデータベースを選択して接続を実行できるように、データベースリストをコンボボックスに表示する必要があります。 –

+0

正確な回答ではありませんでしたが、ありがとうchris –

3

  • EXEC sp_databases
  • SELECT * FROM sys.databases

セルジュ

3

まず次のアセンブリを追加します。

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

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

次のコードを使用してください:あなたは

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

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

あなたが見ることができる詳細については、[この質問](http://stackoverflow.com/questions/147659/get-list-of-databases-from-sql-server) – Amir

+1

これを試したが、私は接続情報を参照してください.dll私は "モジュールCommonLanguageRuntimeLibraryでタイプSystem.SystemExceptionを見つけることができません。"ビルドエラー。 – Mastro

+0

なぜこのソリューションは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]; 
    } 
関連する問題