C# でクエリを実行するために OleDB を使用しています。
1 つのコマンド ステートメントで複数のクエリを実行する方法はありますか?
セミコロン (;) で区切ろうとしましたが、「最後に文字が見つかりました」というエラーが表示されます
一度に数百のクエリを実行する必要があります。
編集:挿入ステートメントを実行しています。
C# でクエリを実行するために OleDB を使用しています。
1 つのコマンド ステートメントで複数のクエリを実行する方法はありますか?
セミコロン (;) で区切ろうとしましたが、「最後に文字が見つかりました」というエラーが表示されます
一度に数百のクエリを実行する必要があります。
編集:挿入ステートメントを実行しています。
1 つの 内でクエリを結合することはできませんOleDbCommand
。可能であれば、ストアド プロシージャを作成します。そうしないと、サーバーで多くの OleDbCommand を起動することに固執する必要があります。
ただし、接続プールはOleDbConnection
デフォルトで有効になっていることに注意してください。
.NET Framework Data Provider for OLE DB を使用する場合、接続プールはプロバイダーによって自動的に管理されるため、有効にする必要はありません。
編集:
次のようなことを試してください:
INSERT INTO myTable ( Column1, Column2, Column3 )
SELECT 'Value1', 1, 'Value3'
UNION
SELECT 'Value1', 2, 'Value3'
UNION
SELECT 'Value1', 3, 'Value3'
UNION
SELECT 'Value1', 4, 'Value3'
接続している OleDb プロバイダーによっては、これを使用できる場合があります。ただし、とにかくレコードを 1 つずつ挿入するのと同じくらい遅くなる可能性があることに注意してください。
GO(バッチをグループ化)とコロンを使用してそれらをバッチ処理するだけで、バッチ内のクエリを分離できます。コロンは必ずスペースで囲んでください。このSQLをsp_executesqlに送信する必要があります。
BEGIN TRANSACTION
GO
USE AdventureWorks;
GO
CREATE TABLE dbo.mycompanies
(
id_num int IDENTITY(100, 5),
company_name nvarchar(100)
)
GO
INSERT mycompanies (company_name)
VALUES (N'A Bike Store');
INSERT mycompanies (company_name)
VALUES (N'Progressive Sports');
INSERT mycompanies (company_name)
VALUES (N'Modular Cycle Systems');
INSERT mycompanies (company_name)
VALUES (N'Advanced Bike Components');
INSERT mycompanies (company_name)
VALUES (N'Metropolitan Sports Supply');
INSERT mycompanies (company_name)
VALUES (N'Aerobic Exercise Company');
INSERT mycompanies (company_name)
VALUES (N'Associated Bikes');
INSERT mycompanies (company_name)
VALUES (N'Exemplary Cycles');
GO
SELECT id_num, company_name
FROM dbo.mycompanies
ORDER BY company_name ASC;
GO
COMMIT;
GO
MSDNからの例。
を使用しsp_executesql
ます。
SQLクエリをバッチで送信するためのサンプル使用法が含まれている別の質問で私の答えを見てください。sp_executesql