C# C DataTable更新字符串列,格式为exeption

C# C DataTable更新字符串列,格式为exeption,c#,string,oracle,datatable,C#,String,Oracle,Datatable,如果要在数据表中更改字符串值,则会导致格式异常,如果写入相同的值,则不会 该问题是在字符串列更改时导入CSV文件时引起的 使用ISO-8859-1导入CSV文件行 Original import | 09.07.2019 |1234567890 |Dies ist ein Test | 20|Change äü |01.08.2019| Update import | 09.07.2019 |1234567890 |This is a Test

如果要在数据表中更改字符串值,则会导致格式异常,如果写入相同的值,则不会

该问题是在字符串列更改时导入CSV文件时引起的

使用ISO-8859-1导入CSV文件行

Original import
|  09.07.2019 |1234567890     |Dies ist ein Test   |          20|Change äü     |01.08.2019|

Update import
|  09.07.2019 |1234567890     |This is a Test   |          20|Final      |03.08.2019|

string[] Lines = File.ReadAllLines(FileNameFull, Encoding.GetEncoding("ISO-8859-1"));
使用OracleConnection和OracleDataAdapter dotConnect for Oracle将第一个文件导入DataTable connect

进口商品很好用

string[] import_columns = Lines[line_number].Split('|').Select(p => p.Trim()).ToArray();
DataRow current_row= target_table.NewRow();
//abbreviated code for each column, the following is executed
try
{
    switch (target_table.Columns[column_name].DataType.Name)
    {
        case "String":
            current_row[column_name] = import_columns[column_index];
            break;

       //pruned
    }

}
catch (Exception ex)
{
    Console.WriteLine(column_name+ " : " + target_table.Columns[column_name].DataType.Name + " => " + import_columns[column_index].ToString() + " ### " + ex.Message);
    //throw;
}
// after last Column
target_table.Rows.Add(current_row);
但使用新文件进行的更新会为所有更改字符串值生成格式异常

string[] import_columns = Lines[line_number].Split('|').Select(p => p.Trim()).ToArray();
DataRow current_row = FindRow(target_table, import_columns);
current_row.BeginEdit();
//abbreviated code for each column, the following is executed
try
{
    switch (target_table.Columns[column_name].DataType.Name)
    {
        case "String":
            current_row[column_name] = import_columns[column_index];
            break;

       //pruned
    }

}
catch (Exception ex)
{
    Console.WriteLine(column_name+ " : " + target_table.Columns[column_name].DataType.Name + " => " + import_columns[column_index].ToString() + " ### " + ex.Message);
    //throw;
}
// after last Column
current_row.EndEdit();

CSV文件使用“|字符分隔列,旧代码使用:string[]import_columns=Lines[line_number]。拆分“|”。选择p=>p.Trim.ToArray;。新代码没有拆分列。我更新了我的个人信息我的个人信息我的个人信息我的个人信息我的原始代码我的个人信息我的个人信息我的个人信息我的个人信息我的个人信息我的个人信息我的个人信息我的个人信息我的个人信息我的个人信息我的个人信息我的个人信息我的个人信息我的个人信息我的个人信息我的个人信息我的个人信息我的个人信息我的个人信息我的个人?是否使用第一行作为列名?如果两个文件的第一行不同,并且您使用第一行作为名称,则会出现问题。只有当字符串值被其他值覆盖时,才会发生错误!示例current_row[2]具有内容测试,如果我在其中写入current_row[2]=测试它是否有效。但是如果我写当前的_行[2]=hello,就会出现一个异常。无论它们是从CSV文件导入的,还是我用例如hello!覆盖所有字符串列,这都无关紧要!那没有任何意义。正在发生其他不明显的情况。CSV文件正在使用“|字符分隔列,而旧代码使用:string[]import_columns=Lines[line_number]。拆分“|”。Selectp=>p.Trim.ToArray;。新代码没有拆分列。我更新了我的个人信息我的个人信息我的个人信息我的个人信息我的原始代码我的个人信息我的个人信息我的个人信息我的个人信息我的个人信息我的个人信息我的个人信息我的个人信息我的个人信息我的个人信息我的个人信息我的个人信息我的个人信息我的个人信息我的个人信息我的个人信息我的个人信息我的个人信息我的个人信息我的个人?是否使用第一行作为列名?如果两个文件的第一行不同,并且您使用第一行作为名称,则会出现问题。只有当字符串值被其他值覆盖时,才会发生错误!示例current_row[2]具有内容测试,如果我在其中写入current_row[2]=测试它是否有效。但是如果我写当前的_行[2]=hello,就会出现一个异常。无论它们是从CSV文件导入的,还是我用例如hello!覆盖所有字符串列,这都无关紧要!那没有任何意义。还有一些不明显的事情正在发生。