【问题标题】:c# datatable Cannot update. Database or object is read-onlyc# datatable 无法更新。数据库或对象是只读的
【发布时间】:2023-03-17 14:05:01
【问题描述】:
private void Form1_Load(object sender, EventArgs e)
        {
            GetDataTable(@"C:\Documents and Settings\agordon\Desktop\ACTIVITYEX.log");
        }
        public System.Data.DataTable GetDataTable(string strFileName)
        {
            System.Data.OleDb.OleDbConnection conn = 
                new System.Data.OleDb.OleDbConnection
                    ("Provider=Microsoft.Jet.OleDb.4.0; Data Source = " 
                    + System.IO.Path.GetDirectoryName(strFileName) 
                    + ";Extended Properties = \"Text;HDR=YES;FMT=TabDelimited\"");
            conn.Open();
            string strQuery = "SELECT * FROM [" + System.IO.Path.GetFileName(strFileName) + "]";
            System.Data.OleDb.OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter(strQuery, conn);
            System.Data.DataTable ds = new System.Data.DataTable("CSV File");
            adapter.Fill(ds);
            return ds;
        }

当 THE SAME 文件被命名为 .csv 时,它不会给我一个错误;但是,当我将其重命名为 .log 时,它会在 adapter.Fill 上显示 Cannot update. Database or object is read-only.

这是编译器错误吗?

【问题讨论】:

    标签: c# .net datatable


    【解决方案1】:

    一个旧帖子,但我刚刚进入了那个问题。 请参考这篇文章:https://support.microsoft.com/en-us/kb/245407

    长话短说:Jet Engine 在读取 CSV 文件时仅接受少数文件扩展名(扩展属性=TEXT 等)。

    解决方案:

    1. 在读取文件时重命名临时文件夹中的文件
    2. 使用 JET 以外的其他机制读取它(标准 File.io.ReadAllLines)
    3. 如 antonio Bukala 所指出,在 Windows 注册表中添加扩展

    【讨论】:

      【解决方案2】:

      不,这不是编译器错误。如果有的话,那是 OleDb Jet 引擎的错误。过去我在 Jet 上遇到过足够多的问题,所以我通常会避免它。使用TextFieldParser 可以节省大量调试时间。

      【讨论】:

        【解决方案3】:

        *.log 是禁用扩展,AFAIK 唯一的方法是在将运行此代码的机器上更改注册表,请参阅 MS 知识库 article

        【讨论】:

        • 我将它重命名为 .log1 仍然是相同的 msg
        • 您是否在注册表中添加了日志扩展?我知道这听起来令人难以置信,但你必须将它添加到注册表项禁用扩展,因为有一个!在前面,这显然意味着不是,如果!使用这些是允许的扩展。奇怪,这里有详细解释:access.mvps.org/access/bugs/bugs0046.htm
        猜你喜欢
        • 2017-07-28
        • 1970-01-01
        • 2014-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-11
        • 1970-01-01
        • 2014-06-09
        相关资源
        最近更新 更多