Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работа с ADOConnection,смена бд. / 16 сообщений из 16, страница 1 из 1
01.03.2013, 13:56
    #38170941
Oxotnuk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с ADOConnection,смена бд.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
void __fastcall TForm1::ComboBox1DropDown(TObject *Sender)
{
ComboBox1->Items->Clear();
try{
 ADOQuery1->SQL->Clear();
 ADOQuery1->SQL->Add("SELECT name  FROM sysdatabases");
 ADOQuery1->Open();
 ADOQuery1->First();
  while(!ADOQuery1->Eof)
 {
  ComboBox1->Items->Add(ADOQuery1->FieldByName("name")->AsString);
  ADOQuery1->Next();
 }
   }catch(...){}
}


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
void __fastcall TForm1::ComboBox1Change(TObject *Sender){
{
if(!ComboBox1->Text.IsEmpty())
   {
    ADOConnection1->DefaultDatabase=ComboBox1->Items[ComboBox1->ItemIndex].ToString();
   }
}
 
}


Просто если я сменю бд, один раз,последующий раз я не смогу изменить,потому что я уже уйду из системной бд и у меня уже не будет таблички sysdatabases.
ADOConnection1 DefaultDatabase - master первый раз с таким параметром все ок меняется.
Так собственно вопрос,как мне хранить и использовать данные первого запроса, в переменной или еще как то?
Было бы не плохо с примером)
Либо подскажите,как правильно организовывать сессию:)
для прыганья по бд, и динамические использовать ADOStoredProc
...
Рейтинг: 0 / 0
01.03.2013, 14:30
    #38171007
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с ADOConnection,смена бд.
OxotnukПросто если я сменю бд, один раз,последующий раз я не смогу изменить,потому что я уже уйду из системной бд и у меня уже не будет таблички sysdatabasesда ну
откройте SSMS и попробуйте выполнить
Код: sql
1.
2.
3.
4.
use tempdb
go
select count(*) as cnt from master..sysdatabases
go

у меня, например, выдает
Код: sql
1.
2.
3.
4.
5.
cnt
-----------
61

(1 row(s) affected)
...
Рейтинг: 0 / 0
01.03.2013, 14:41
    #38171029
Oxotnuk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с ADOConnection,смена бд.
Паганель, не совсем понял логики,а зачем мне получать кол-во баз?
...
Рейтинг: 0 / 0
01.03.2013, 14:43
    #38171031
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с ADOConnection,смена бд.
У Вас мой примерчик выполняется или нет?
...
Рейтинг: 0 / 0
01.03.2013, 14:45
    #38171037
Oxotnuk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с ADOConnection,смена бд.
Да,конечно.
...
Рейтинг: 0 / 0
01.03.2013, 14:46
    #38171043
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с ADOConnection,смена бд.
OxotnukДа,конечно.следовательно, sysdatabases доступна
всё
...
Рейтинг: 0 / 0
01.03.2013, 14:54
    #38171057
Oxotnuk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с ADOConnection,смена бд.
Расскажу подробнее.
Изначально использую
ADOConnection, в нем указывается обязательным параметром, дефаулт датабейс(указал master). собственно откомилировав программу и запустив, я уже имею конекшен на сервере.
Идем далее я хочу получить список БД на сервере с помощью combobox. я его получаю,на данный момент я нахожусь еще в базе данных master. после чего я хочу изменить текущее место положение и перейти в другую базу данных. Я делаю AdoConnection->DefualtDatabase=база данных. Собвственно я меняю бд, но последующий раз я её не изменю.потому что select в комбобокс я не смогу получить,из за того,что я уже не нахожусь в базе данных мастер,и перепрыгнуть как делают всякие клиенты СУБД,я так же не смогу, собственно,я и пытаюсь реализовать этот переход :)

Вроде понятно мысль изложил. :)
...
Рейтинг: 0 / 0
01.03.2013, 14:56
    #38171061
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с ADOConnection,смена бд.
Oxotnukselect в комбобокс я не смогу получить,из за того,что я уже не нахожусь в базе данных мастеря только что показал, что можно обращаться к sysdatabases не находясь в базе данных мастер
чего еще надо-то?
...
Рейтинг: 0 / 0
01.03.2013, 15:00
    #38171068
Oxotnuk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с ADOConnection,смена бд.
Да пробовал я делать так (master..sysdatabase)
Я знаю,что можно так выполнять,но программа всеравно крашится....
...
Рейтинг: 0 / 0
01.03.2013, 15:06
    #38171076
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с ADOConnection,смена бд.
OxotnukДа пробовал я делать так (master..sysdatabase)
Я знаю,что можно так выполнять,но программа всеравно крашится....у ошибок SQL обычно есть текст, по которому можно было бы определить причину

кроме того, если в ответ на один и тот же SQL сервер одному клиенту дает ответ, а другому - ошибку,
то возможно не хватает прав, тогда рекомендую обратиться к DBA
...
Рейтинг: 0 / 0
01.03.2013, 16:16
    #38171198
m_Sla
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с ADOConnection,смена бд.
Oxotnuk, зачем ты в ComboBox1DropDown получаешь список БД?
Получи его 1 раз при создании формы например.
...
Рейтинг: 0 / 0
01.03.2013, 16:18
    #38171202
Oxotnuk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с ADOConnection,смена бд.
m_Sla,А если в данный момент я зашел, а после создали БД,а у меня то этой БД не будет...
...
Рейтинг: 0 / 0
01.03.2013, 16:34
    #38171226
m_Sla
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с ADOConnection,смена бд.
Oxotnuk, создай отдельный ADOConnection для мастер БД.
...
Рейтинг: 0 / 0
01.03.2013, 16:37
    #38171230
Oxotnuk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с ADOConnection,смена бд.
m_Sla,Уже делал, оно вешает еще коннект к серверу,а мне это критично.
Вообщем по сути,помогите мне результат первого запроса куда то положить....
...
Рейтинг: 0 / 0
01.03.2013, 16:56
    #38171271
m_Sla
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с ADOConnection,смена бд.
Oxotnuk, подключил отдельный коннект к мастер БД, получил данные, отключил коннект. Зачем его постоянно держать?
Сохранять примерно так (пишу без Билдера, возможны ошибки).
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
TStrings *first_query;


в КреатеФорм()
{
        first_query=new TSringList;
        ...
}


void __fastcall TForm1::ComboBox1DropDown(TObject *Sender)
{
ComboBox1->Items->Clear();

{
try{
 ADOQuery1->SQL->Clear();
 ADOQuery1->SQL->Add("SELECT name  FROM sysdatabases");
 ADOQuery1->Open();
 ADOQuery1->First();
  while(!ADOQuery1->Eof)
 {
  //ComboBox1->Items->Add(ADOQuery1->FieldByName("name")->AsString);
  first_query->Add(ADOQuery1->FieldByName("name")->AsString);
  
  ADOQuery1->Next();
 }
   }catch(...){}
}
  ComboBox1->Items=first_query;

}
...
Рейтинг: 0 / 0
01.03.2013, 17:07
    #38171288
Oxotnuk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с ADOConnection,смена бд.
m_Sla,Спасибо огромное,получилось! :)
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работа с ADOConnection,смена бд. / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]