c # datatable Невозможно обновить.База данных или объект только для чтения - PullRequest
2 голосов
/ 02 июня 2011
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;
        }

когда один и тот же файл называется .csv, он не выдает ошибку;однако, когда я переименую его в .log, он говорит Cannot update. Database or object is read-only. на adapter.Fill

это ошибка компилятора?

Ответы [ 3 ]

1 голос
/ 14 сентября 2016

Старый пост, но я только что вошел в эту проблему.Пожалуйста, обратитесь к этой статье: https://support.microsoft.com/en-us/kb/245407

Короче говоря: Jet Engine принимает только несколько расширений файлов при чтении файла CSV (Расширенные свойства = TEXT и т. Д.).

Решения:

  1. переименуйте ваш файл во временную папку при чтении его
  2. прочитайте его с другим механизмом, чем JET (стандартный File.io.ReadAllLines)
  3. Добавьте расширениереестр Windows, как указал Антонио Букала
0 голосов
/ 02 июня 2011

Нет, это не ошибка компилятора.Во всяком случае, это ошибка двигателя OleDb Jet.В прошлом у меня было достаточно проблем с Jet, поэтому я обычно избегаю этого.Вы можете сэкономить много времени на отладку, используя TextFieldParser .

0 голосов
/ 02 июня 2011

*. Log - отключенное расширение, AFAIK единственный способ - это изменение реестра на компьютере, на котором будет выполняться этот код, см. Базу знаний MS статья

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...