C#SqlBulkCopy类型不匹配

c# sqlbulkcopy

我有一个DataTable有10列,在我添加了一些行之后,我想使用SqlBulkCopy将它添加到数据库中。

我的问题是在DataTable中我有字符串,数据库中的一些字段分别是十进制和日期。有没有办法将它们转换为所需的数据类型?

一般承认的答案

以编程方式向DataTable添加列时,可以指定类型: -

DataTable dt = new DataTable();
dt.Columns.Add("FieldName", typeof(System.Decimal));

执行批量复制时,这些将受到尊重。

编辑

回应用户评论。

在使用信息填充DataRow时, 当源数据与目标字段不匹配时才需要显式转换。

如果类型相同,您只需分配它。

例如

// With a decimal field, decimal target
Decimal myNum = 123;
// Works fine - assuming the Price datacolumn has been set up as a System.Decimal
row["Price"] = myNum;

热门答案

我有同样的问题,我想从一个excel文件中复制数据,这个文件有字符串,我希望它们作为double存储在数据库中。我已粘贴与以下问题相关的代码: -

DataTable dt = new DataTable();

//从第一张纸上读取数据

    connExcel.Open();
    cmdExcel.CommandText = "SELECT * From [" + SheetName + "] ";
        oda.SelectCommand = cmdExcel;
        oda.Fill(dt);
        connExcel.Close();


        Convert.ToDouble(dt.Columns["Product"]);

//其中product(产品温度)是数据库中的数据类型为float且excel文件为string的列。



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因