微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 DataTable 列在使用 FileHelpers 从 CSV 加载时是只读的?

如何解决为什么 DataTable 列在使用 FileHelpers 从 CSV 加载时是只读的?

场景 1:

sql Server 数据库加载数据表工作正常。

我还可以更新该数据表中的数据而不会出现问题:

sqlConnection conn = new sqlConnection(gDBConn);
sqlCommand cmd = new sqlCommand("ListData",conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new sqlParameter("@Parm1","*"));

conn.open();
sqlDataAdapter sda = new sqlDataAdapter(cmd);
DataTable dt = new DataTable();
sda.Fill(dt);
conn.Close();
cmd.dispose();

dt.Select()[0]["Col1"]=9; //<--------- Works Fine

场景 2:

从 CSV 文件加载数据表是有问题的。

我无法更新该数据表中的数据。

我收到此错误

using (var reader = new StreamReader(path))
using (var csv = new CsvReader(reader,CultureInfo.InvariantCulture))
{
    using (var dr = new CsvDataReader(csv))
    {
        var dt = new DataTable();
        dt.Load(dr);
    }
}

dt.Select()[0]["Col1"]=9; //<--------- Cause error

threw an exception of type 'System.Data.ReadOnlyException'
    Data: {System.Collections.ListDictionaryInternal}
    HResult: -2146232025
    HelpLink: null
    InnerException: null
    Message: "Column 'IncExcSug' is read only."
    Source: "System.Data"
    StackTrace: "   at System.Data.DaTarow.set_Item(DataColumn column,Object value)\r\n
                    at System.Data.DaTarow.set_Item(String columnName,Object value)"
    TargetSite: {Void set_Item(System.Data.DataColumn,System.Object)}

从 CSV 加载有什么问题,如何使其可更新?

CSV 和 DB 中的数据如下所示:

Col1       Col2        Col3           Col4
-------------------------------------------
1           A            2             M
1           H            6             R
1           K            3             K
3           A            6             D
5           K            3             R
5           E            1             D
8           D            0             I

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。