1
在我的C++代码中,当我尝试运行ADO命令将行插入到表中时,它只插入一定数量的行。在.NET中使用System.Data.SqlClient时,同样的命令效果很好。ADO命令tsql插入查询问题
当使用ADO或sqlclient时,Sql profiler显示相同的文本数据。下面是我的insert commandtext,我不知道还有什么办法来解决这个问题。
对此的任何帮助表示赞赏。
命令文本:
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;
}
感谢您的帮助。
我猜你实际上在第153行发生致命错误,无论什么原因,你都没有得到通知。我会建议找到那个行并运行原始SQL。 – 2010-11-18 19:12:43
我只是试过,并没有用原始SQL命中任何错误。另外,如果我使用相同的SQL并在SQL客户端运行,它会通过罚款。 – neblinc1 2010-11-18 19:18:07