use*_*511 6 c# database sql-server-2008
我正在使用C#与框架4.0和SQL Server 2008 R2.我用这段代码列出了SQL Server 2008:
public static string[] GetSQLServerList()
{
SqlDataSourceEnumerator dse = SqlDataSourceEnumerator.Instance;
DataTable dt = dse.GetDataSources();
if (dt.Rows.Count == 0)
{
return null;
}
string[] SQLServers = new string[dt.Rows.Count];
int f = -1;
foreach (DataRow r in dt.Rows)
{
string SQLServer = r["ServerName"].ToString();
string Instance = r["InstanceName"].ToString();
if (Instance != null && !string.IsNullOrEmpty(Instance))
{
SQLServer += "\\" + Instance;
}
SQLServers[System.Math.Max(System.Threading.Interlocked.Increment(ref f), f - 1)] = SQLServer;
}
Array.Sort(SQLServers);
return SQLServers;
}
Run Code Online (Sandbox Code Playgroud)
我在ComboBox上列出了我的服务器.
如何列出数据库,取决于我在ComboBox中选择的服务器?
我找到了这个教程,但它需要sqlconnection,当我没有选择服务器时如何连接?
CR4*_*G14 14
这是您获取网络上的服务器名称列表的方法:
List<String> ServerNames = new List<String>();
SqlDataSourceEnumerator servers = SqlDataSourceEnumerator.Instance;
DataTable serversTable = servers.GetDataSources();
foreach (DataRow row in serversTable.Rows) {
string serverName = row[0].ToString();
try {
if (row[1].ToString() != "") {
serverName += "\\" + row[1].ToString();
}
}
catch {
}
ServerNames.Add(serverName);
}
Run Code Online (Sandbox Code Playgroud)
从所选服务器获取数据库列表:
List<String> databases = new List<String>();
SqlConnectionStringBuilder connection = new SqlConnectionStringBuilder();
connection.DataSource = SelectedServer;
// enter credentials if you want
//connection.UserID = //get username;
// connection.Password = //get password;
connection.IntegratedSecurity = true;
String strConn = connection.ToString();
//create connection
SqlConnection sqlConn = new SqlConnection(strConn);
//open connection
sqlConn.Open();
//get databases
DataTable tblDatabases = sqlConn.GetSchema("Databases");
//close connection
sqlConn.Close();
//add to list
foreach (DataRow row in tblDatabases.Rows) {
String strDatabaseName = row["database_name"].ToString();
databases.Add(strDatabaseName);
}
Run Code Online (Sandbox Code Playgroud)