PDA

View Full Version : Sql Bulk Copy/Insert in C#



saeid_eiv
دوشنبه 12 اسفند 1392, 12:01 عصر
سلام
کسی اطلاعاتی در مورد Sql Bulk Copy/Insert in C# (http://stackoverflow.com/questions/18841000/sql-bulk-copy-insert-in-c-sharp)داره؟!
من می خوام اطلاعاتی رو که تو DataTable دارم رو میخوام بصورت دسته ای Batch تو دیتابیس ام ذخیره کنم لطفا راهنمایی ام کنین.

Davidd
دوشنبه 12 اسفند 1392, 15:09 عصر
فرض كنيم يك ديتا تيبل به نام dt داريم كه از نظر نام و نوع هم ارز يك جدول در ديتابيس هست. يك كانكشن به ديتابيس مي سازيم و به راحتي dt را در جدول مورد نظر كپي مي كنه:

SqlBulkCopy bulkCopy = new SqlBulkCopy(yourSqlConnection);
bulkCopy.DestinationTableName = DB_TableName; نام جدول در ديتابيس
bulkCopy.WriteToServer(dt);

saeid_eiv
دوشنبه 12 اسفند 1392, 15:40 عصر
ممنون دوست خوبم
اونطوری من فهمیدم پس دیتاتیبل من با جدولم هم ارز نیست!
جدول من به این صورته:

IDPropValue bigint Unchecked
FKProduct bigint Checked
FKProp bigint Checked
ProValue nvarchar(MAX) Checked
Unchecked


و دیتاتیبل من به این صورت:



DataTable propValueDataTable = new DataTable("TblPropValue");
//Column 1:FKProductId
DataColumn fkProductidColumn = new DataColumn();
fkProductidColumn.DataType = Type.GetType("System.Int64");
fkProductidColumn.ColumnName = "FKProductID";




//Column 2:FKProp
DataColumn fkpropcColumn = new DataColumn();
fkpropcColumn.DataType = Type.GetType("System.Int64");
fkpropcColumn.ColumnName = "FKProp";




//Column 3:FKProp
DataColumn fkValuecColumn = new DataColumn();
fkValuecColumn.DataType = Type.GetType("System.String");
fkValuecColumn.ColumnName = "ProValue";
//Add Column to Data Table propValueDataTable
propValueDataTable.Columns.Add(fkProductidColumn);
propValueDataTable.Columns.Add(fkpropcColumn);
propValueDataTable.Columns.Add(fkValuecColumn);








DataRow propvalueRow = propValueDataTable.NewRow();
propvalueRow["FKProductID"] = 1037;
propvalueRow["FKProp"] = 1;
propvalueRow["ProValue"] = "i7 2.3 G.H.Z";
propvalueRow["FKProductID"] = 1037;
propvalueRow["FKProp"] = 2;
propvalueRow["ProValue"] = "16GB";

و من اونو به این صورت اجرا کردم:

propValueDataTable.Rows.Add(propvalueRow);
string connString = ConfigurationManager.ConnectionStrings["DB"].ToString();
using (SqlConnection connection =
new SqlConnection(connString))
{
// make sure to enable triggers
// more on triggers in next post
SqlBulkCopy bulkCopy =
new SqlBulkCopy
(
connection,
SqlBulkCopyOptions.TableLock |
SqlBulkCopyOptions.FireTriggers |
SqlBulkCopyOptions.UseInternalTransaction,
null
);








// set the destination table name
bulkCopy.DestinationTableName =propValueDataTable.TableName;
connection.Open();








// write the data in the "dataTable"
bulkCopy.WriteToServer(propValueDataTable);
connection.Close();
}
// reset
propValueDataTable.Clear();

این مشکل هم ارز نبودن کجاست!!!

saeid_eiv
چهارشنبه 14 اسفند 1392, 22:10 عصر
دوستان من هنوز به نتیجه نرسیدم لطفا کمک ام کنید.
اگه نمونه سورس دارین ممنون میشم اگه اینجا قرار بدین.

saeid_eiv
سه شنبه 20 اسفند 1392, 21:11 عصر
کمک ام کنین.