【发布时间】:2015-01-19 11:18:33
【问题描述】:
我正在尝试从 xml 文件中读取值,然后使用批量复制将数据插入到我的数据库中。
我正在使用一个自定义类:
class Customer
{
public int CustomerID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int ShowsNumber { get; set; }
public int VisitNumber { get; set; }
public int Cancellation { get; set; }
}
我这样读取数据:
List<Customer> customersList =
(
from e in XDocument.Load(file).Root.Elements("cust")
select new Customer
{
CustomerID = (int)e.Attribute("custid"),
FirstName = (string)e.Attribute("fname"),
LastName = (string)e.Attribute("lname"),
ShowsNumber = (int)e.Attribute("count_noshow"),
VisitNumber = (int)e.Attribute("count_resos"),
Cancellation = (int)e.Attribute("count_cancel"),
}).ToList();
然后我将 customersList 插入到这样的数据表中:
DataTable dataTable = getBasicDataTable();
for (int i = 0; i < customersList.Count; i++)
{
DataRow datarows = dataTable.NewRow();
datarows[0] = customersList[i].CustomerID;
datarows[1] = customersList[i].FirstName;
datarows[2] = customersList[i].LastName;
datarows[3] = customersList[i].ShowsNumber;
datarows[4] = customersList[i].VisitNumber;
datarows[5] = customersList[i].Cancellation;
dataTable.Rows.Add(datarows);
}
然后我像这样将数据插入到我的数据库中:
但我遇到了这个异常
using (SqlBulkCopy sbc = new SqlBulkCopy(GetConnectionString()))
{
sbc.DestinationTableName = XMLReader.databaseTable;
sbc.WriteToServer(dataTable);
}
来自数据源的String类型的给定值无法转换为指定目标列的int类型。
如您所见,当我从我的 xml 中提取数据时,我已经使用了 int 和 string 的转换,并且它正在工作。那么为什么在插入数据库时出现异常?
注意
为了给你完整的代码,这是getBasicDataTable函数
private DataTable getBasicDataTable()
{
DataTable dataTable = new DataTable();
dataTable.Clear();
dataTable.Columns.Add("customerID");
dataTable.Columns.Add("firstName");
dataTable.Columns.Add("lastName");
dataTable.Columns.Add("showsNumber");
dataTable.Columns.Add("visitNumber");
dataTable.Columns.Add("cancellation");
return dataTable;
}
【问题讨论】:
标签: c# linq linq-to-xml sqlbulkcopy