Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
 Аватар для ndrnesterov
4 / 4 / 3
Регистрация: 28.11.2017
Сообщений: 107

DataSet и Firebird

23.12.2019, 13:45. Показов 2664. Ответов 23

Студворк — интернет-сервис помощи студентам
Добрый день!

У меня вопрос с программным добавлением DBF в базу firebird. Обязательное условие - это должна быть программа на С#.

Вообщем, я загружаю таблицу dbf в DataSet.

Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
string connStr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + openfiledialogDBF.FileName.Substring(0, openfiledialogDBF.FileName.LastIndexOf("\\")) + ";Extended Properties=dBASE IV;";
 
                OleDbConnection conn = new OleDbConnection(connStr);
                conn.Open();
 
                string cmd_string = "select * from " + openfiledialogDBF.SafeFileName.Substring(0, openfiledialogDBF.SafeFileName.IndexOf("."));
             
                OleDbDataAdapter da = new OleDbDataAdapter(cmd_string, conn);
                DataSet ds = new DataSet();
                da.Fill(ds);


После я хочу из DataSet выгрузить эту таблицу в firebird. Есть ли легкий способ это сделать?

Я начал писать код на костылях и палках, типа:
Кликните здесь для просмотра всего текста
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
string conn1 = @"data source = localhost; port = 3050; initial catalog = D:\DB_TEST.FDB; user id = SYSDBA; password = *****; Dialect = 3";
// Это как я вызываю свой метод...
Firebird_CREATE_TABLE(ds, ofdDBF.SafeFileName.Substring(0, ofdDBF.SafeFileName.IndexOf(".")), conn1);
 
// Ну а это сам метод создания таблицы
void Firebird_CREATE_TABLE(DataSet ds, string table, string conn) // Принимаем dataset, Имя будущей таблицы и подключение
        {
            try
            {
                List<string> str1 = new List<string>();
 
                for (int i = 0; i < ds.Tables[0].Columns.Count; i++)
                {
                    string rty = null;
                    switch (ds.Tables[0].Columns[i].DataType.ToString())
                    {
                        case "System.String": rty = "VARCHAR (150)"; break;
                        case "System.Double": rty = "DOUBLE PRECISION"; break;
                        case "System.DateTime": rty = "DATE"; break;
                        default: rty = ds.Tables[0].Columns[i].DataType.Name; break;
                    }
 
                    str1.Add(ds.Tables[0].Columns[i].ColumnName + " " + rty);
                }
 
                string ss1 = null;
                for (int i = 0; i < str1.Count - 1; i++)
                {
                    ss1 += str1[i] + ",";
                }
                ss1 += str1[str1.Count - 1];
 
                FbCommand cmd = new FbCommand("create table " + table + " (" + ss1 + ");");
                cmd.CommandType = CommandType.Text;
                using (cmd.Connection = new FbConnection(conn))
                {
                    cmd.Connection.Open();
                    cmd.ExecuteNonQuery();
                    cmd.Connection.Close();
                }
            }
            catch (Exception ex)
            {
                Message_ERROR(ex);
            }
        }


Потом ещё извращения с insert into...
Но это как-то неправильно... Меня прям что-то останавливает... Кто-нибудь с таким сталкивался? Как можно реализовать перемещение таблицы из DataSet в firebird?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.12.2019, 13:45
Ответы с готовыми решениями:

Передача данных из таблицы одной dataSet в таблицу другой dataSet
Здравствуйте. У меня возникла ситуация когда необходимо передать данные из таблицы одной dataset в таблицу другой dataset, которая хранит...

Отбор записей из одного DataSet в другой DataSet
Совсем недавно работаю под VS2008 C#. Имеется подключение к базе mdb. Примерная структура таблицы MAIN (поля): SURNAME (text), NAME...

FireBird + Interbase&Firebird Development Studio
Установил FireBird 2.5 SuperClassic и Interbase&amp;Firebird Development Studio. Зашел в студию, создал таблицу, пытаюсь создать БД - выдает...

23
 Аватар для ndrnesterov
4 / 4 / 3
Регистрация: 28.11.2017
Сообщений: 107
24.12.2019, 14:48  [ТС]
Студворк — интернет-сервис помощи студентам
Я как понял, DataAdapter подойдет, если база данных подключена через ODBC? Просто я не понимаю, как после добавления строк мне отправить данные через adapter.Update();
0
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
24.12.2019, 16:04
ndrnesterov, ODBC не ODBC не важно. В Firebird ADO.NET клиенте есть FbDataAdapter, вот его и используйте. Вы были на правильном пути
В метод Update надо передать DataTable, в вашем случае ничего даже не надо трансформировать - просто передать таблицу из датасета, который вы загрузили - ds.Tables[0].
Все что вам надо это правильно сконфигурировать dataAdapter.InsertCommand.
Надо создать команду с параметрами, как показано в примере из статьи.
Это проще чем кажется, когда поймете механику работы
0
24.12.2019, 17:44

Не по теме:

nicolas2008, вы на код посмотрите. Если заработало без DataAdapter, то бог с ним. А вообще, перенос схемы, с ключами и индексами, предполагает программу посложнее. И Adapter'ы тут не главное)

0
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
24.12.2019, 18:41
Usaga, так и хочется как раз помочь человеку упростить код, не рокет саенс же этот датаадаптер
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.12.2019, 18:41

Заполнение DataSet данными из другого DataSet
Здравствуйте. Есть DataSet (назовем его ds1) с 2 связанными таблицами( Table1 и Table2, связаны по полю ID). Необходимо выбрать часть...

Разбиение строки в FireBird - Firebird/InterBase
Продолжая тему отсюда: https://www.cyberforum.ru/firebird/thread309236.html :wall: Есть поле типа VARCHAR, в котором хранятся данные вида...

Как разделить Dataset на 3 Dataset?
Есть Dataset ds; В нём первая таблица содержит 30 строк. Надо раскидать строки из его первой таблицы на 3 разные dataGridView. Беру...

Копирование данных из DataSet в DataSet
Люди, подскажите, как мне скопировать данные из одного DataSet(Access) в другой(Наборы данных имееют одинаковую структуру). Мне кажется,...

Fast Report: "Cannot use the same dataset for Report.DataSet and Band.DataSet"
Здравствуйте! Подскажите, пожалуйста, в чём ошибка. Я добавила на форму два компонента: frxReport1 и frxDBDataSet1. В свойстве...


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

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru