ADO命令tsql插入查询问题

时间:2010-11-18 18:50:14

标签: c++ tsql ado

在我的C ++代码中,当我尝试运行ADO命令将行插入表中时,它只插入一定数量的行。在.NET中使用System.Data.SqlClient时,同样的命令也能正常工作。

使用ADO或sqlclient时,Sql Profiler显示相同的textdata。下面是我的insert命令文本,我不知道还有什么可以解决这里的问题。

对此有任何帮助表示赞赏。

命令文字:

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 :(得分:0)

我明白了。添加“SET NOCOUNT ON”允许插入继续。不确定ADO的限制是什么。