c# - C# DataTable 更新字符串列,格式为 exeption
问题描述
如果在数据表中要更改字符串值,则会导致格式异常,如果写入相同的值则不会。
该问题是在字符串列更改时导入 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 连接
导入工作正常
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();
解决方案
推荐阅读
- c++ - 将指针传递给模板类的模板成员
- python - Comparing different data structures for a problem, which one is the best?
- c++ - ESP8266 WiFi 管理器和调制解调器睡眠
- asp.net-core - AspNetCore.Reporting not working on linux machine?
- c++ - OpenSpliceConfig.cmake or opensplice-config.cmake not found while building dds-tutorial-cpp-ex
- python - Error while trying to build an executable from python files, using Cython and Visual Studio 2019 (32/64bits link.exe)
- python - How to format x and y labels in seaborn.heatmap
- spring-boot - Cache Cloud Native Buildpacks/Paketo.io pack CLI builds on GitHub Actions (e.g. with Spring Boot/Java/Maven buildpacks)?
- delphi - Google Oauth2 Consent Screen "Allow" button disabled for DELPHI app
- oracle - Calculating number of rows in a file created by UTL_FILE