Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> При чтении большой базы access вылетает ошибка 
:(
    Опции темы
aRixx
Дата 14.7.2008, 08:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 2.11.2007

Репутация: нет
Всего: нет



Помогите. Простая задачка перегнать базу Access в текстовый файл. Решаю в C#. Для небольшой базы все нормально работает, но когда пытаюсь перегнать большую базу (200Mb) программа вылетает с сообщением об ошибке. Что делть???

Код

        private void button1_Click(object sender, EventArgs e)
        {            
            OleDbConnection cn = new OleDbConnection();
            cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\\_aRix\\Библиотека\\Orbi.mdb; User Id=admin;Password=;";
            cn.Open();

            string mstr = "SELECT * FROM DOC";
            OleDbCommand mcmd1 = new OleDbCommand(mstr, cn);

            OleDbDataReader mdr = mcmd1.ExecuteReader();
   
            while (mdr.Read())
            {
                textBox1.Text = mdr[3].ToString();     
                
            }
            mdr.Close();
            cn.Close();
        }

PM MAIL   Вверх
vretsky
Дата 14.7.2008, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 29.10.2007

Репутация: нет
Всего: нет



с какой ошибкой вылетает?
может таймаут надо увеличить?

mcmd1.CommandTimeout=666;
PM MAIL   Вверх
Magnifico
Дата 14.7.2008, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 23.1.2008
Где: Московская област ь

Репутация: 2
Всего: 17



Цитата

 textBox1.Text = mdr[3].ToString();   

ты сохраняешь не в текстовой файл ,а  заполяешь контрол TextBox
хоть я и не читал документации на этот счет , но TextBox  просто     не выдержит 200 мб

Код

//--сохраняем в CSV формате -  разделитель пробел
OleDbDataReader rdr = cmd.ExecuteReader();
          
  StreamWriter sw =new StreamWriter(@"C:\files\stream.txt");
                while (rdr.Read())
                {
                    string temp = "";
                    for (int i = 0; i< rdr.FieldCount;i++ )
                    {
                        temp += ' ' + rdr[i].ToString();
                    }
                    sw.WriteLine(temp.Trim());

                }
    sw.Close();
    rdr.Close();



--------------------
Всё  в  порядке   -   спасибо  зарядке  !
PM MAIL   Вверх
aRixx
Дата 14.7.2008, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 2.11.2007

Репутация: нет
Всего: нет



Блин, ну естественно я пишу в текстбокс. Просто решил не перегружать код и максимально упростить отлов бага. Если вы обратили внимание я текстбокс каждый раз перезаписываю, так что ни о каком переполнении речи идти не может. В каждый момент времени в нем содержится всего одна строка с числом.

Код ошибки:
Код

The CLR has been unable to transition from COM context 0x203918 to COM context 0x203a88 for 60 seconds. The thread that owns the destination context/apartment is most likely either doing a non pumping wait or processing a very long running operation without pumping Windows messages. This situation generally has a negative performance impact and may even lead to the application becoming non responsive or memory usage accumulating continually over time. To avoid this problem, all single threaded apartment (STA) threads should use pumping wait primitives (such as CoWaitForMultipleHandles) and routinely pump messages during long running operations.


Строчка mcmd1.CommandTimeout=666;помогла. Всем спасибо.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0447 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.