Tôi nhận được mã lỗi trên khi cố gắng để làm một SqlBulkInsert của "thành phố" sau DataTable:SqlBulkCopy Giá trị nhất định của loại DateTime từ nguồn dữ liệu không thể được chuyển đổi sang loại int của cột mục tiêu quy định
DataTable cityTable = new DataTable(City.TABLE_NAME);
cityTable.Columns.Add("id", typeof(int));
cityTable.Columns.Add("name", typeof(string));
cityTable.Columns.Add("ascii_name", typeof(string));
cityTable.Columns.Add("alternate_names", typeof(string));
cityTable.Columns.Add("latitude", typeof(double));
cityTable.Columns.Add("longitude", typeof(double));
cityTable.Columns.Add("feature_class", typeof(char));
cityTable.Columns.Add("feature_code", typeof(string));
cityTable.Columns.Add("country_code", typeof(string));
cityTable.Columns.Add("country_code2", typeof(string));
cityTable.Columns.Add("population", typeof(long));
cityTable.Columns.Add("elevation", typeof(int));
cityTable.Columns.Add("modification_date", typeof(DateTime));
cityTable.Columns.Add("admin1code", typeof(string));
cityTable.Columns.Add("admin2code", typeof(string));
cityTable.Columns.Add("admin3code", typeof(string));
cityTable.Columns.Add("admin4code", typeof(string));
cityTable.Columns.Add("gtopo30", typeof(int));
cityTable.Columns.Add("timezone_name", typeof(string));
cityTable.Columns.Add("version", typeof(Binary));
sau đây là đoạn code mà thêm từng đối tượng vào DataTable:
object id = EvaluateNullity(parsedCity.Id);
object name = EvaluateNullity(parsedCity.Name);
object asciiName = EvaluateNullity(parsedCity.AsciiName);
object alternateNames = EvaluateNullity(parsedCity.AlternateNames);
object latitude = EvaluateNullity(parsedCity.Latitude);
object longitude = EvaluateNullity(parsedCity.Longitude);
object featureClass = EvaluateNullity(parsedCity.FeatureClass);
object featureCode = EvaluateNullity(parsedCity.FeatureCode);
object countryCode = EvaluateNullity(parsedCity.CountryCode);
object countryCode2 = EvaluateNullity(parsedCity.CountryCode2);
object population = EvaluateNullity(parsedCity.Population);
object elevation = EvaluateNullity(parsedCity.Elevation);
object modificationDate = EvaluateNullity(parsedCity.ModificationDate);
object admin1Code = EvaluateNullity(parsedCity.Admin1Code);
object admin2Code = EvaluateNullity(parsedCity.Admin2Code);
object admin3Code = EvaluateNullity(parsedCity.Admin3Code);
object admin4Code = EvaluateNullity(parsedCity.Admin4Code);
object gtopo30 = EvaluateNullity(parsedCity.Gtopo30);
object timeZoneName = EvaluateNullity(parsedCity.TimeZoneName);
object version = EvaluateNullity(parsedCity.Version);
cityRow["id"] = id;
cityRow["name"] = name;
cityRow["ascii_name"] = asciiName;
cityRow["alternate_names"] = alternateNames;
cityRow["latitude"] = latitude;
cityRow["longitude"] = longitude;
cityRow["feature_class"] = featureClass;
cityRow["feature_code"] = featureCode;
cityRow["country_code"] = countryCode;
cityRow["country_code2"] = countryCode2;
cityRow["population"] = population;
cityRow["elevation"] = elevation;
cityRow["modification_date"] = modificationDate;
cityRow["admin1code"] = admin1Code;
cityRow["admin2code"] = admin2Code;
cityRow["admin3code"] = admin3Code;
cityRow["admin4code"] = admin4Code;
cityRow["gtopo30"] = gtopo30;
cityRow["timezone_name"] = timeZoneName;
cityRow["version"] = version;
Và mã cho EvaluateNullity:
public object EvaluateNullity(object entity)
{
return entity ?? DBNull.Value;
}
Sự hiểu biết của tôi từ thông báo lỗi này là giá trị ngày giờ được đặt trong một trong các cột int bên trên. Tuy nhiên, một sửa lỗi có điều kiện nhanh chóng sau đó, và kiểm tra trong cửa sổ ngay lập tức tiết lộ rằng không có cột int nào có kiểu DateTime được đặt trong chúng. http://desmond.imageshack.us/Himg42/scaled.php?server=42&filename=mod1rm.jpg&res=landing http://desmond.imageshack.us/Himg37/scaled.php?server=37&filename=modyf.jpg&res=landing
Tôi thực sự bối rối.
Kiểm tra kỹ xem thứ tự của các cột được xác định trong cityTable có khớp với thứ tự các cột trong bảng cơ sở dữ liệu hay không. –
Cảm ơn bạn David Andres !!!!!!!! Đã dành cả ngày hôm qua để cố gắng gỡ lỗi vấn đề này, tôi KHÔNG có ý tưởng rằng thứ tự bạn đã xác định các cột thực sự ảnh hưởng đến điều này! Tôi muốn đánh dấu giải pháp của bạn là câu trả lời nhưng có vẻ như bạn đã viết nó làm nhận xét thay vì trả lời ... –
Điều đó có hơi ngớ ngẩn không? Khuôn khổ cần phải quan tâm đến điều đó. – Filip