В моем коде 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;
}
Спасибо за вашу помощь.