簡體   English   中英

如何使用C#將一維數組中的每個元素插入SQL數據庫的新行中?

[英]How can I insert each element in a 1D array into a new row in an SQL Database using C#?

我有一個包含要插入SQL數據庫的文件路徑列表的數組。

string[] filePaths = Directory.GetFiles(@"C:\Test Folder");

我對設置和連接數據庫充滿信心,只是無法弄清楚如何獲取每個元素並將其放置在數據庫的新行中。

謝謝,馬特

foreach(string fp in filePaths)
{
   InsertIntoDb(fp);
}

//Method
public void InsertIntoDb(string insert)
{
   SqlConnection con = //Setup DB connection
   SqlCommand command = new SqlCommand();
   command.Connection = con;
   command.CommandText = "Insert @insert into Table";
   command.Parameters.AddWithValue("@insert", insert);
   command.ExecuteNonQuery();
}

這樣可以省去很多,但是應該為您指明正確的方向。 本質上,您想建立連接,實例化一個SqlCommand對象,其中命令文本是要插入值的SQL文本(更好的方法是使用存儲過程或其他某些經過消毒的方式插入數據以避免Sql Injection),然后調用ExecuteNonQuery()插入實際數據。

這取決於您使用的技術( 請注意,在插入許多行時,建議使用SqlBulkCopy )。

ADO.NET

foreach (var path in filePaths)
{
   var command = new SqlCommand("INSERT INTO mytable(col1) VALUES(@param1)", connection);
   command.Parameters.AddWithValue("@param1", path);
   command.ExecuteNonQuery();
}

LINQ到SQL

var projection = filePaths.Select(a => new MyTable() { Col1 = a });
myContext.InsertAllOnSubmit(projection);
myContext.SubmitChanges();

LINQ到實體

foreach (var path in filePaths)
{
   myModel.MyTable.AddObject(new MyTable() { Col1 = path });
}
myModel.SaveChanges();

最有效的方法是使用SqlBulkCopy

您必須將數據投影到DataTable,DataRow []等中。或者使用IDataReader (效率更高-請參見此討論和示例),以便使用SqlBulkCopy

暫無
暫無

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

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