|
|
|
Forum Member
      
участник
Last Login: 30.11.2006 13:13
Сообщ.: 31,
Visits: 84
|
|
Подобный вопрос уже был.
Ответы мне не очень понравились, поэтому задаю еще раз но с уточнением, может кто-нибудь сможет помочь...
Мне нужно подключиться к SQL-серверу(это понятно )
Хочется чтобы пользователь мог нажать на кнопочку и ему вываливался список серверов. это я сделал
код C#
SqlDataSourceEnumerator instance =
SqlDataSourceEnumerator.Instance;
DataTable table = instance.GetDataSources();
foreach (DataRow row in table.Rows)
{
if ( row[ "InstanceName" ].ToString() == "" )
serverComboBox.Items.Add( row[ "ServerName" ] );
else
serverComboBox.Items.Add( row[ "ServerName" ]+"\\" + row[ "InstanceName" ] );
}
а дальше в идеале надо, чтобы в соседнем окошечке вываливался список баз данных... и вот тут я попал в тупик...
может знает кто????
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| Для получения списка баз данных нужно запросить у пользователя логин и пароль к этому SQL серверу или попытаться подключится к нему используя доверенное соединение. Без входа на сервер список баз получить нельзя.
|
|
|
|
|
Forum Member
      
участник
Last Login: 30.11.2006 13:13
Сообщ.: 31,
Visits: 84
|
|
ok. Вот я заканектился:
string connectionString = "Provider=SQLOLEDB;server=TEST;User ID=;Password=;Integrated Security=SSPI";
OleDbConnection oleDbConnection = new OleDbConnection( connectionString);
oleDbConnection.Open();
что дальше?
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| Вызывай хранимую процедуру sp_helpdb. Она есть в sql2000/2005.
|
|
|
|
|
Forum Member
      
участник
Last Login: 30.11.2006 13:13
Сообщ.: 31,
Visits: 84
|
|
я честно говоря только-только начинаю писать...
можно поподробней где и как ее вызвать???
OleDbConnection.sp_helpdb
или как?
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
Примерно так:using (SqlConnection sqlConn = new SqlConnection("Server=TEST;Integrated Security=SSPI")) { sqlConn.Open(); SqlCommand sqlCmd = new SqlCommand(); sqlCmd.Connection = sqlConn; sqlCmd.CommandType = CommandType.StoredProcedure; sqlCmd.CommandText = "sp_helpdb"; SqlDataAdapter da = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds); foreach (DataRow row in ds.Tables[0].Rows) { databaseComboBox.Items.Add(row["name"].ToString()); } }Обрати внимание, что для работы с MSSQL лучше использовать классы из пространства имен System.Data.SqlClient. Советую также изучить примеры для начинающих работать с ADO.NET
|
|
|
|
|
Forum Member
      
участник
Last Login: 30.11.2006 13:13
Сообщ.: 31,
Visits: 84
|
|
| а без DataAdapter никак нельзя??? GetSchema или что-то подобное?
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| Чем тебе DataAdapater не угодил то? Можно вместо DataAdapter/DataSet использовать SqlDataReader: using (SqlConnection sqlConn = new SqlConnection("Server=TEST;Integrated Security=SSPI")) { sqlConn.Open(); SqlCommand sqlCmd = new SqlCommand(); sqlCmd.Connection = sqlConn; sqlCmd.CommandType = CommandType.StoredProcedure; sqlCmd.CommandText = "sp_helpdb"; using (SqlDataReader sqlDR = sqlCmd.ExecuteReader(CommandBevavior.CloseConnection)) { int col_name = sqlDR.GetOrdinal("name"); while (sqlDR.Read()) { databaseComboBox.Items.Add(sqlDR.GetString(col_name)); } } } Или ты ждешь что в .NET есть готовый метод для получения списка БД? Может он и есть, но я о таком не знаю. Кроме того никто не мешает тебе оформить вышеприведенный код в свою функцию. Имена баз она может возвращать в виде string[].
|
|
|
|
|
Supreme Being
      
участник
Last Login: 27.03.2008 15:26
Сообщ.: 701,
Visits: 7 028
|
|
Вот тебе кусок кода:using SQLDMO;................... private void GetSQLServers() { for(int i=0;i<20;i++) { cinfo[i] = new CInfo(); } SQLDMO.Application dmo = new SQLDMO.Application(); SQLDMO.NameList SQLNameList = dmo.ListAvailableSQLServers(); for(int i=0;i<SQLNameList.Count;i++) { object srv = SQLNameList.Item( i + 1); if(srv != null) { this.cbxServ.Items.Add(srv.ToString()); } } } }
Заполняет список доступных SQL серверов в сети. Выдернул из своей проги.
|
|
| |