Ошибка преобразования строки в byte[] в C# DataTableC#

Место общения программистов C#
Anonymous
Ошибка преобразования строки в byte[] в C# DataTable

Сообщение Anonymous »

Я читаю данные CSV из различных файлов в объект C# DataTable соответственно. Поскольку это CSV, я изначально читаю все данные как строку. После этого я хочу записать его в таблицу сервера sql, используя класс SqlBulkCopy.
Мне нужно преобразовать столбцы в целевой тип данных в месте назначения, и я хотел сделать это так: это неявно позволяя DataTable выполнять преобразование:

Код: Выделить всё

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.Data;

namespace SQLBulkTest
{
class Program
{
static void Main(string[] args)
{
DataTable dt = new DataTable("dt");

DataColumn item = new DataColumn("item", typeof(String));
dt.Columns.Add(item);

DataColumn type = new DataColumn("type", typeof(String));
dt.Columns.Add(type);

DataColumn bin = new DataColumn("bin", typeof(String));
dt.Columns.Add(bin);

DataColumn floatItem = new DataColumn("floatItem", typeof(String));
dt.Columns.Add(floatItem);

// Add five items.
DataRow NewRow;
var teststring = "0x0050568F00041ED783A79F94B797E9B6";

for (int i = 0; i < 5; i++)
{
NewRow = dt.NewRow();
NewRow["item"] = i.ToString();
NewRow["type"] = "Type " + i;
NewRow["bin"] = teststring;
NewRow["floatItem"] = i.ToString() + "," + i.ToString();
dt.Rows.Add(NewRow);
}

DataTable dtCloned = dt.Clone();
dtCloned.Columns[0].DataType = typeof(Int32);
dtCloned.Columns[2].DataType = typeof(System.Byte[]);
dtCloned.Columns[3].DataType = typeof(double);
foreach (DataRow row in dt.Rows)
{
var mappedRow = dt.NewRow();
mappedRow[0] = row[0];
mappedRow[1] = row[1];
mappedRow[2] = Encoding.UTF8.GetBytes((string)row[0]);
mappedRow[3] = row[3];
dtCloned.Rows.Add(mappedRow.ItemArray);
}
}
}
}
При запуске кода появляется следующая ошибка:

Код: Выделить всё

System.ArgumentException: 'Type of value has a mismatch with column typeCouldn't store
 in bin Column.  Expected type is Byte[].'
Что я могу сделать, чтобы импортировать также двоичные данные. В SQL Server его необходимо хранить как varbinary.

Подробнее здесь: https://stackoverflow.com/questions/785 ... -datatable

Вернуться в «C#»