Как я могу вставить каждый элемент в одномерном массиве в новую строку в базе данных SQL, используя C #? - PullRequest
0 голосов
/ 20 апреля 2011

У меня есть массив, содержащий список путей к файлам, которые я хочу вставить в базу данных SQL.

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

Я уверен в настройке и подключении к базе данных, я просто не могу понять,как взять каждый элемент и поместить его в новую строку в базе данных.

Спасибо, Мэтт

Ответы [ 3 ]

2 голосов
/ 20 апреля 2011

Это зависит от того, какую технологию вы используете ( Обратите внимание, что при вставке большого количества строк рекомендуется использовать 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 к Entities

foreach (var path in filePaths)
{
   myModel.MyTable.AddObject(new MyTable() { Col1 = path });
}
myModel.SaveChanges();
2 голосов
/ 20 апреля 2011
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), а затемвызовите ExecuteNonQuery () для вставки фактических данных.

1 голос
/ 20 апреля 2011

Самый эффективный способ - использовать SqlBulkCopy

вам придется проецировать ваши данные в DataTable, DataRow [] и т. Д. ИЛИ IDataReader (что более эффективно - см. Это обсуждение и пример), чтобы использовать SqlBulkCopy

...