具有GUID(唯一身份标识符)列的C#中的SQL批量插入

问题描述 投票:0回答:1

我需要将数据从一个表复制到另一表。我收到一条消息异常:

来自数据源的String类型的给定值不能是转换为指定目标列的类型uniqueidentifier“,

因为我有具有GUID数据类型的列。

我的代码...

using (SqlConnection destinationConn = new SqlConnection("Data Source = ''; Initial Catalog = ''; Persist Security Info = True; User ID = ''; Password = ''; MultipleActiveResultSets = true"))
            {
                using (SqlBulkCopy bc = new SqlBulkCopy(destinationConn))
                {
                    bc.DestinationTableName = "Animal";

                    destinationConn.Open();

                    bc.ColumnMappings.Add("guid", "guid"); //UniqueIdentifier
                    bc.ColumnMappings.Add("Name", "Name");
                    bc.WriteToServer(dt);  //DATA TABLE object


                }
            }

我该如何解决这个问题?

c# sql-server sqlbulkcopy
1个回答
0
投票

我遇到类似的问题,我解决了。如果需要,请检查我的以下代码。

                DataTable dt = new DataTable();
                dt.Columns.Add("IdColumn1", typeof(Guid));
                dt.Columns.Add("IdColumn2", typeof(Guid));
                foreach (var item in MyCollection)
                    dt.Rows.Add(item.obj1, item.obj2);

                using (SqlConnection con = new SqlConnection(ConnectionString))
                {
                    con.Open();

                    using (var bulkCopy = new SqlBulkCopy(con))
                    {
                        bulkCopy.DestinationTableName = "TableName";
                        bulkCopy.ColumnMappings.Add("IdColumn1", "IdColumn1");
                        bulkCopy.ColumnMappings.Add("IdColumn2", "IdColumn2");
                        bulkCopy.WriteToServer(dt);
                    }
                    dt.Dispose();
                }
© www.soinside.com 2019 - 2024. All rights reserved.