2010-11-18 14 views
1

私のC++コードでは、ADOコマンドを実行してテーブルに行を挿入しようとすると、特定の行数だけが挿入されます。 .NETでSystem.Data.SqlClientを使用する場合、同じコマンドがうまく機能します。ADOコマンドtsqlはクエリの問題を挿入します

ADOまたはsqlclientを使用する場合、SQLプロファイラは同じテキストデータを表示します。以下は私の挿入コマンド文ですが、ここで問題を明らかにするために何をすべきかは分かりません。

これについての助けに感謝します。

コマンドテキスト:

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行で終了。これはテーブルサイズに依存しますか? コマンドを2回実行すると、@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; 
    } 

ありがとう:

これは私の接続文字列と私は、接続を構築するために使用しているコードです。

+0

私はあなたが153行目で実際に致命的なエラーに遭っていると思います。何らかの理由で通知されません。その行が何であるかを見つけ出し、生のSQLを実行することをお勧めします。 –

+0

私はこれを試しただけで、生のSQLでエラーを起こさなかった。また、私は同じSQLを使用し、SQLクライアントで実行する場合、それはうまくいく。 – neblinc1

答えて

0

私はそれを仕事にしました。 'SET NOCOUNT ON'を追加すると、挿入を続行できます。制限がADOに何であるかわからない