Transact - SQL
От: mitq Россия  
Дата: 26.03.02 03:21
Оценка:
Здравствуйте.

Мне надо написать клиент-софтинку, которая бы работала с MS SQL Server 7.0. Наибольшая эффективность, я так понимаю, будет достигнута при написании запросов на T-SQL. Какие Microsoft поставляет интерфейсы для посылки T-SQL запросов и работы с их результатами? Или можно использовать обычные CDatabase и CRecordset? (Программирую в VC++ 6.0)

Спасибо, Дмитрий.
Re: Transact - SQL
От: vav Россия  
Дата: 26.03.02 03:53
Оценка:
M>Мне надо написать клиент-софтинку, которая бы работала с MS SQL Server 7.0. Наибольшая эффективность, я так понимаю, будет достигнута при написании запросов на T-SQL.

А какие варианты?
Если важна скорость, то имеет смысл обратить внимание на stored procedures.

M>Какие Microsoft поставляет интерфейсы для посылки T-SQL запросов и работы с их результатами?

VC++ пойдет?


M>Или можно использовать обычные CDatabase и CRecordset? (Программирую в VC++ 6.0)


да.
Re: Transact - SQL
От: Sinclair Россия https://github.com/evilguest/
Дата: 26.03.02 07:56
Оценка:
Здравствуйте mitq, Вы писали:

M>Здравствуйте.


M>Мне надо написать клиент-софтинку, которая бы работала с MS SQL Server 7.0. Наибольшая эффективность, я так понимаю, будет достигнута при написании запросов на T-SQL.

А ни на чем другом ты их и не напишешь
M>Какие Microsoft поставляет интерфейсы для посылки T-SQL запросов и работы с их результатами? Или можно использовать обычные CDatabase и CRecordset? (Программирую в VC++ 6.0)

интерфейсы — как везде:
1. Нативный (dblib) — самый шустрый, но обещают перестать поддерживать. Вроде бы уже в 2000 ее нема.
2. OLE DB
3. ADO
4. DAO
5. ODBC
6. JDBC
7. BDE

Насчет CDatabase и CRecordset ничего не скажу — ни разу с этим не работал. Либо дельфи+ADO, либо уже ++ с dblib
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Transact - SQL
От: Lexey Россия  
Дата: 26.03.02 09:21
Оценка:
Здравствуйте Sinclair, Вы писали:

M>>Мне надо написать клиент-софтинку, которая бы работала с MS SQL Server 7.0. Наибольшая эффективность, я так понимаю, будет достигнута при написании запросов на T-SQL.

S>А ни на чем другом ты их и не напишешь
M>>Какие Microsoft поставляет интерфейсы для посылки T-SQL запросов и работы с их результатами? Или можно использовать обычные CDatabase и CRecordset? (Программирую в VC++ 6.0)

Если ты собираешься писать обычное клиентское приложение, то выбирай связку ADO+OLE DB и не мучайся.

S>интерфейсы — как везде:

S>1. Нативный (dblib) — самый шустрый, но обещают перестать поддерживать. Вроде бы уже в 2000 ее нема.

Есть. Только для шустрости почему-то рекомендуют использовать OLE DB, а не DB Library.

S>2. OLE DB

S>3. ADO
S>4. DAO

Шутишь? DAO с SQL Server'ом не работает.

S>5. ODBC

S>6. JDBC
S>7. BDE

S>Насчет CDatabase и CRecordset ничего не скажу — ни разу с этим не работал. Либо дельфи+ADO, либо уже ++ с dblib


CDatabase и CRecordset — это обертки над ODBC, причем довольно кривые.
Re[3]: Transact - SQL
От: mitq Россия  
Дата: 26.03.02 11:40
Оценка:
Здравствуйте Lexey, Вы писали:

L>Если ты собираешься писать обычное клиентское приложение, то выбирай связку ADO+OLE DB и не мучайся.


Использование ADO — это что-то типа:
CoInitialize( 0 );

try
{
   _ConnectionPtr pConnection = 0;
   if ( SUCCEEDED( pConnection.CreateInstance( __uuidof(Connection) ) ) )
   {
      pConnection->ConnectionString = "DRIVER=SQL Server;SERVER=сервер;DATABASE=бд;UID=пользователь;PWD=пароль";
      pConnection->ConnectionTimeout = 30;
      pConnection->Open( "", "", "", adConnectUnspecified );
      bool bConnect = pConnection->State == adStateOpen;

      //
      // Используем pConnection (пока не разобрался, как :) )
      //

      if ( bConnect ) pConnection->Close();
   }
}
catch ( _com_error & e )
{
   // ...
}

CoUninitialize();

Если это то самое ADO, то какое-то оно... все такое неинкапсулированное, что ли... и на первый взгляд не очень симпатичное.
Скажите, пожалуйста, я в правильном направлении иду?

Дмитрий.
Re[3]: Transact - SQL
От: Begginer  
Дата: 26.03.02 12:09
Оценка:
Здравствуйте Lexey, Вы писали:

L>CDatabase и CRecordset — это обертки над ODBC, причем довольно кривые.


А почему вы эти классы считаете кривыми.


Спасибо.
Re[4]: Transact - SQL
От: nic_ii  
Дата: 26.03.02 14:20
Оценка:
Здравствуйте mitq, Вы писали:

M>Использование ADO — это что-то типа:

M>
M>CoInitialize( 0 );

M>try
M>{
M>   _ConnectionPtr pConnection = 0;
M>   if ( SUCCEEDED( pConnection.CreateInstance( __uuidof(Connection) ) ) )
M>   {
M>      pConnection->ConnectionString = "DRIVER=SQL Server;SERVER=сервер;DATABASE=бд;UID=пользователь;PWD=пароль";
M>      pConnection->ConnectionTimeout = 30;
M>      pConnection->Open( "", "", "", adConnectUnspecified );
M>      bool bConnect = pConnection->State == adStateOpen;

M>      //
M>      // Используем pConnection (пока не разобрался, как :) )
M>      //

M>      if ( bConnect ) pConnection->Close();
M>   }
M>}
M>catch ( _com_error & e )
M>{
M>   // ...
M>}

M>CoUninitialize();
M>

M>Если это то самое ADO, то какое-то оно... все такое неинкапсулированное, что ли... и на первый взгляд не очень симпатичное.
M>Скажите, пожалуйста, я в правильном направлении иду?

Идете вы в правильном направлении, и никто вам не мешает инкапсулировать ADO самому. Вы же на ++ пишете, вот и создайте два класса
типа: CADOConnection и CADORecordset.
Re[4]: Transact - SQL
От: Lexey Россия  
Дата: 26.03.02 15:43
Оценка:
Здравствуйте Begginer, Вы писали:

B>Здравствуйте Lexey, Вы писали:


L>>CDatabase и CRecordset — это обертки над ODBC, причем довольно кривые.


B>А почему вы эти классы считаете кривыми.

B>

Потому, что они таковыми и являются.
Имел я с ними пару таких отпадных глюков, после которых использовать их не имею ни малейшего желания.
Re[4]: Transact - SQL
От: Lexey Россия  
Дата: 26.03.02 15:46
Оценка:
Здравствуйте mitq, Вы писали:

M>Здравствуйте Lexey, Вы писали:


L>>Если ты собираешься писать обычное клиентское приложение, то выбирай связку ADO+OLE DB и не мучайся.


M>Использование ADO — это что-то типа:

M>
M>CoInitialize( 0 );

M>try
M>{
M>   _ConnectionPtr pConnection = 0;
M>   if ( SUCCEEDED( pConnection.CreateInstance( __uuidof(Connection) ) ) )
M>   {
M>      pConnection->ConnectionString = "DRIVER=SQL Server;SERVER=сервер;DATABASE=бд;UID=пользователь;PWD=пароль";
M>      pConnection->ConnectionTimeout = 30;
M>      pConnection->Open( "", "", "", adConnectUnspecified );
M>      bool bConnect = pConnection->State == adStateOpen;

M>      //
M>      // Используем pConnection (пока не разобрался, как :) )
M>      //

M>      if ( bConnect ) pConnection->Close();
M>   }
M>}
M>catch ( _com_error & e )
M>{
M>   // ...
M>}

M>CoUninitialize();
M>


M>Если это то самое ADO, то какое-то оно... все такое неинкапсулированное, что ли... и на первый взгляд не очень симпатичное.


Ага, оно самое.
Вполне инкапсулированное и симпатичное. Не нравится — юзай VB или C#, там все намного красивее выглядит. Или один раз попробуй написать что-нибудь на pure ODBC или OLE DB — потом тебе ADO раем покажется.

M>Скажите, пожалуйста, я в правильном направлении иду?


Да.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.