我有一个System.Data.DataTable,它通过读取CSV文件来填充,该文件将每列的数据类型设置为字符串.
我想将DataTable的内容追加到现有的数据库表 - 目前这是使用SqlBulkCopy和DataTable作为源完成的.
但是,需要更改DataTable的列数据类型以匹配目标数据库表的模式,从而处理空值.
我对ADO.NET不太熟悉,所以一直在寻找一种干净的方法吗?
谢谢.
Gis*_*way 11
我写了这个通用函数来完成这项工作,它对我很有用:
public static bool ChangeColumnDataType(DataTable table, string columnname, Type newtype)
{
if (table.Columns.Contains(columnname) == false)
return false;
DataColumn column= table.Columns[columnname];
if (column.DataType == newtype)
return true;
try
{
DataColumn newcolumn = new DataColumn("temporary", newtype);
table.Columns.Add(newcolumn);
foreach (DataRow row in table.Rows)
{
try
{
row["temporary"] = Convert.ChangeType(row[columnname], newtype);
}
catch
{
}
}
table.Columns.Remove(columnname);
newcolumn.ColumnName = columnname;
}
catch (Exception)
{
return false;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
你可以复制代码并将它放在一个类(MyClass here)中,并像这样使用它作为一个例子:
MyClass.ChangeColumnDataType(table, "GEOST", typeof (int));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
74868 次 |
| 最近记录: |