Проблемы ADO tsql вставки запроса - PullRequest
1 голос
/ 18 ноября 2010

В моем коде C ++, когда я пытаюсь выполнить команду ADO для вставки строк в таблицу, она вставляет только определенное количество строк. Эта же команда хорошо работает при использовании System.Data.SqlClient в .NET.

Sql profiler показывает те же текстовые данные при использовании ADO или sqlclient. Ниже мой текст команды вставки, я не уверен, что еще нужно сделать, чтобы раскрыть проблему здесь.

Любая помощь по этому вопросу приветствуется.

Текст команды:

declare @i int set @i = 1 while (@i < 255) 
begin 
  insert into table1 (name,type, order, state) values (@i, N'type',0,0) 
     set @i = @i +1 
end

Указанная команда заканчивается 153 строками. Это зависит от размера стола? Если я посылаю команду выполнить дважды, последовательно одну в диапазоне от @i 0 до 150 и другую от 150 до 255, все строки вставляются нормально. У меня лимит на выполнение команды ADO?

Это моя строка подключения и код, который я использую для создания подключения:

CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
ADODB::_ConnectionPtr m_Conn = NULL;  
TCHAR connString[255];
  _stprintf(connString, 
      _T("DRIVER=SQL Server;SERVER=np:(local)\\MyInstance;DATABASE=test;"));

   HRESULT hr;
   hr = m_Conn.CreateInstance(__uuidof(ADODB::Connection));
   if (hr != S_OK) {
     wprintf(_T("CreateInstance(__uuidof(ADODB::Connection)) failed. Error: %d"), hr);
     return 0;
   }

   m_Conn->ConnectionTimeout = 1800;
   m_Conn->CommandTimeout = 1800;

   hr = m_Conn->Open((LPCTSTR)connString, _T(""), _T(""), 
       ADODB::adConnectUnspecified);
   if (hr != S_OK) {
     wprintf(_T("Open(%ws, '', '', ADODB::adConnectUnspecified) failed."),
         connString);
     return 0;
   }

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 19 ноября 2010

У меня все получилось.Добавление «SET NOCOUNT ON» позволило продолжить вставку.Не уверен, какой лимит в ADO.

...