С Новым годом! Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 30.10.2013
Сообщений: 8
1

Ошибка при работе с dbf через OLEDB

13.01.2014, 07:13. Показов 2616. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток.
Возникла такая проблема: из таблицы записываю данные в файл dbf. Записываются 1032 строки и после этого постоянно выдается ошибка "Недостаточно системных ресурсов". В чем может быть проблема?
Вот строки подключения к базе и записи данных.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
//Строка подключения к базе данных
        private static string GetConnectionString()
        {
            return string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=dBASE IV; Data Source={0}", GetDirectoryData());
        }
        //OleDbConnection
        private static OleDbConnection GetOleDbConnection()
        {
            OleDbConnection m_conn = new OleDbConnection();
            m_conn.ConnectionString = GetConnectionString();
 
            return m_conn;
        }
 
        //Сообщение об ошибке 
        public static void ErrorMessage(string p_message)
        {
            MessageBox.Show(p_message);
        }
 
        //Запись данных в файл
        public static bool ExecuteQuery(string p_query, OleDbParameter[] p_pr)
        {
            bool m_result = true;
            OleDbConnection m_conn = GetOleDbConnection();
            OleDbCommand m_cmd = new OleDbCommand();
 
            try
            {
                m_conn.Open();
            }
            catch (OleDbException e)
            {
                ErrorMessage(e.Message + "№1");
            }
 
            m_cmd.Connection = m_conn;
            m_cmd.CommandText = p_query;
 
            if (p_pr != null)
            {
                for (int i = 0; i < p_pr.Length; i++)
                {
                    m_cmd.Parameters.Add(p_pr[i]);
                }
            }
 
            try
            {
                m_cmd.ExecuteNonQuery();   // В этом месте ошибка после записи 1032 строк
            }
            catch (OleDbException e)
            {
                m_result = false;
                ErrorMessage(e.Message + "№2");
            }
            finally
            {
                m_cmd.Cancel();
                m_conn.Close();
            }
 
            return m_result;
        }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.01.2014, 07:13
Ответы с готовыми решениями:

Запрос к файлу DBF через OleDB
Простой запрос с Select'ом возвращает только 8879 записей, хотя в файле их на пару сотен больше....

Ошибка (у пользователей) при работе с dbf (fox pro)
Добрый день.Новичку нужна помощь. Написал программу, которая работает с dbf файлами(Суть: Собираю...

При попытке открыть DBF файл через OpenFileDialog вылетает ошибка
при попытке открыть DBF файл через OpenFileDialog вылетает ошибка private void...

OleDb + dbf 1251
Не могу понять как создать dbf файл с кодировкой 1251 Пробовал вот так: &quot;Provider=VFPOLEDB.1;...

4
0 / 0 / 1
Регистрация: 12.01.2014
Сообщений: 33
13.01.2014, 08:29 2
Недавно столкнулся с проблемой при рабоче с MySQL максимальный размер запроса... Пока в параметрах сервера не указал максимальную длину запроса не мог заливать файлы больше 3 мб... Попробуй разбить и попробовать если зальется тоже самое что и у меня...
0
0 / 0 / 0
Регистрация: 30.10.2013
Сообщений: 8
13.01.2014, 12:01  [ТС] 3
Запрос на обновление данных выполняется построчно. Т.е. 1032 раза запрос выполняется, а на 1033 падает на ошибку.
0
0 / 0 / 1
Регистрация: 12.01.2014
Сообщений: 33
13.01.2014, 13:47 4
Цитата Сообщение от Denis5589 Посмотреть сообщение
Запрос на обновление данных выполняется построчно. Т.е. 1032 раза запрос выполняется, а на 1033 падает на ошибку.
Покажи конкретный запрос на котором ошибка... И конкретно какая ошибка... Тут телепатов мало наверное)
e.ToString()
p_query вместе с параметрами...
0
0 / 0 / 0
Регистрация: 30.10.2013
Сообщений: 8
13.01.2014, 14:37  [ТС] 5
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
                    {
                        if (dataGridView1.Rows[i].Cells[11].Value.ToString() == "Банки")
                        {
                            OleDbParameter[] m_pr1 = new OleDbParameter[11];
 
                            m_pr1[0] = new OleDbParameter("@m_id", dataGridView1.Rows[i].Cells[0].Value.ToString().Remove(0, 4));
                            m_pr1[1] = new OleDbParameter("@m_numip", dataGridView1.Rows[i].Cells[1].Value);
                            m_pr1[2] = new OleDbParameter("@m_date", dataGridView1.Rows[i].Cells[2].Value);
                            m_pr1[3] = new OleDbParameter("@m_organ", OleDbType.Char);
                            m_pr1[3].Value = cp1252.GetString(cp866.GetBytes(OSP[Convert.ToInt32(dataGridView1.Rows[i].Cells[3].Value.ToString().Remove(0, 2))].ToUpper()));
                            if (dataGridView1.Rows[i].Cells[4].Value.ToString() == "")
                                m_pr1[4] = new OleDbParameter("@m_summ", dataGridView1.Rows[i].Cells[4].Value);
                            else
                                m_pr1[4] = new OleDbParameter("@m_summ", Convert.ToInt32(dataGridView1.Rows[i].Cells[4].Value));
                            if (Convert.ToInt32(dataGridView1.Rows[i].Cells[5].Value) == 2)
                                m_pr1[5] = new OleDbParameter("@m_fizur", Convert.ToString(1));
                            else
                                m_pr1[5] = new OleDbParameter("@m_fizur", Convert.ToString(2));
                            m_pr1[6] = new OleDbParameter("@m_fioorg", OleDbType.Char);
                            m_pr1[6].Value = cp1252.GetString(cp866.GetBytes(dataGridView1.Rows[i].Cells[6].Value.ToString().ToUpper()));
                            m_pr1[7] = new OleDbParameter("@m_inn", dataGridView1.Rows[i].Cells[7].Value);
                            if (dataGridView1.Rows[i].Cells[8].Value != null || dataGridView1.Rows[i].Cells[8].Value != "")
                                m_pr1[8] = new OleDbParameter("@m_dater", dataGridView1.Rows[i].Cells[8].Value);
                            else
                                data = true;
                            m_pr1[9] = new OleDbParameter("@m_adress", OleDbType.Char);
                            m_pr1[9].Value = cp1252.GetString(cp866.GetBytes(dataGridView1.Rows[i].Cells[9].Value.ToString().ToUpper()));
                            m_pr1[10] = new OleDbParameter("@m_fiospi", OleDbType.Char);
                            m_pr1[10].Value = cp1252.GetString(cp866.GetBytes(dataGridView1.Rows[i].Cells[10].Value.ToString().ToUpper()));
                            string m_query1;
                            if (!data)
                                m_query1 = "INSERT INTO Sbr5500_1.dbf (REQUEST_ID, NUMISP, DT, ORGAN, SUMM_IP, FIZUR, FIOORG, INN, DATER, ADRESS, FIO_SPI) VALUES (@m_id, @m_numip, @m_date, @m_organ, @m_summ, @m_fizur, @m_fioorg, @m_inn, @m_dater, @m_adress, @m_fiospi)";
                            else
                                m_query1 = "INSERT INTO Sbr5500_1.dbf (REQUEST_ID, NUMISP, DT, ORGAN, SUMM_IP, FIZUR, FIOORG, INN, ADRESS, FIO_SPI) VALUES (@m_id, @m_numip, @m_date, @m_organ, @m_summ, @m_fizur, @m_fioorg, @m_inn, @m_adress, @m_fiospi)";
 
                            ExecuteQuery(m_query1, m_pr1);
                        }
                  }
0
13.01.2014, 14:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.01.2014, 14:37
Помогаю со студенческими работами здесь

Правильный синтаксис при работе с DBF VISUAL fox pro
Есть dbf с fox pro. Пишу на С#. conn.ConnectionString = @&quot;Provider=Microsoft.Jet.OLEDB.4.0;Data...

Microsoft.Jet.OLEDB.4.0 + dbf = Data type mismatch
con=new OleDbConnection(&quot;Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=dBASE IV;User...

Unspecified Error при вызове процедуры Oracle через OleDb
Выполняю вызов процедуры Oracle с помощью следующего кода: try { this.OpenConnection(); ...

Ошибка при построении запроса к БД при работе с dateTimePicker
Выдает ошибку при построении запроса в аксессе 2003. Раньше не работал с dateTimePicker и поэтому...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru