簡體   English   中英

用於Excel電子表格創建的OLEDB和C#批量插入

[英]OLEDB and C# bulk insert for Excel spreadsheet creation

我正在使用C#讀取SQL存儲過程,將存儲過程的結果放入C#數據表中,然后逐行讀取數據表以建立“插入到...值”等。 這將創建具有正確數據的Excel電子表格。 但是,除了逐行插入外,還有其他方法可以進行批量插入嗎?

如果我沒有想到要讓存儲過程將結果寫到永久表中,那么就有辦法進行“插入.... select from”。 當我在C#中嘗試過此代碼時,代碼無法找到指定的“ Microsoft數據庫訪問引擎無法找到對象”指定的SQL表名稱,正確的語法是什么?在哪里指定在何處/如何訪問SQL表?

謝謝


嗨,該鏈接看起來像是在使用Microsoft.Office.Interop.Excel; 我正在使用OLEDB(現在我開始感到后悔!)。 所以基本上我有一個從另一個組件調用的C#類。 此類C#類讀取sql存儲過程,並將結果放入數據表中。 然后,我使用OLEDB命令“插入([])值(“?”)來設置表定義。然后定義參數,例如cmd.Parameters.Add(columnHeading,OleDbType.VarChar,size)等。然后針對每一行我在數據表中找到了我設置的cmd.Parameters [i] .value = row [i],其中該行中每一列的parameter [i]都遞增,然后為每個數據行循環並設置cmd.Parameters [i] .value適當,因為我必須為我在數據集中找到的每一行設置cmd.Parameters [i] .Value,然后設置cmd.ExecuteNonQuery();,這非常耗時,因此有一種方法可以將數據表中的數據批量插入到OLEDB命令中,如果沒有,我是否可以通過直接引用SQL表並執行“插入..select from”來插入數據?

您可以用分號分隔插入語句,僅運行1條命令。 例如 ...

string sql = "insert into table (col1,col2) values ('row1','row1');"
sql += "insert into table (col1,col2) values ('row2','row2');"
sql += "insert into table (col1,col2) values ('row3','row3');"
SqlConnection conn = new SqlConnection("some connection string");
SqlCommand cmd = new SqlCommand(sql, conn);
conn.Open();
conn.ExecuteNonQuery();
conn.Dispose();
cmd.Dispose();

或類似的東西。 您正在使用1條命令執行所有3個查詢。 這可能不適用於SQL Server以外的數據庫,但肯定可以用於SQL Server。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM