powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / SQL запрос в С# на FireBird
17 сообщений из 67, страница 3 из 3
SQL запрос в С# на FireBird
    #38443947
greshnik_05
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУФиребирд ещё не подохло?
Нет он жив.

Pallarisне работает только insert, я правильно понял?
Да


Редактирование текущей записи делаю так

Код: c#
1.
2.
3.
(bindingSource.Current as DataRowView)["name"] = "newName1";
(bindingSource.Current as DataRowView)["path"] = "newPath1";
fbDataAdapter.Update((DataTable)bindingSource.DataSource);
...
Рейтинг: 0 / 0
SQL запрос в С# на FireBird
    #38443950
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PallarisМСУ, не, норм
Ну тухляк же для дельфовых поделок, не?

greshnik_05Нет он жив.
Мдя...
...
Рейтинг: 0 / 0
SQL запрос в С# на FireBird
    #38443952
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
greshnik_05,

С виду команда insert рабочая. id - автоинкрементное поле, генерируется автоматом по триггеру? Никаких ошибок не падает при adapter.Update() после AddNew()? Точно не добавляется запись - или, может, не заметил?
...
Рейтинг: 0 / 0
SQL запрос в С# на FireBird
    #38443957
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

ну, мелкие задачки выполняет, жрать не просит.
...
Рейтинг: 0 / 0
SQL запрос в С# на FireBird
    #38443974
greshnik_05
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Id генерируется по тригеру.
Запись в БД не добавляется. Но новая строка в гриде появляется с заданными значениями, кроме поля id оно пустое авто генерация не происходит
...
Рейтинг: 0 / 0
SQL запрос в С# на FireBird
    #38443976
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУМдя...

кстати, какой основной критерий тухлячности?
...
Рейтинг: 0 / 0
SQL запрос в С# на FireBird
    #38443983
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pallarisкстати, какой основной критерий тухлячности?
Смрад и убогость.
...
Рейтинг: 0 / 0
SQL запрос в С# на FireBird
    #38443990
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
greshnik_05,

в базе изменения появляютяс после Update. Поле id соответственно будет пустым пока не сделаешь Update и Fill
...
Рейтинг: 0 / 0
SQL запрос в С# на FireBird
    #38444619
greshnik_05
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал вот так
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
 private void btnAdd_Click(object sender, EventArgs e)
        {
            try
            {
                DataRowView row = bindingSource.AddNew() as DataRowView;
                row["name"] = "NewName1234";
                row["path"] = "NewPath1234";
                fbDataAdapter.Update((DataTable)bindingSource.DataSource);
                fbDataAdapter.Fill(table);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            

        }



Данные добавляются в БД нормально в том случае если 2 аза нажать на кнопку btnAdd. Не понятно почему
...
Рейтинг: 0 / 0
SQL запрос в С# на FireBird
    #38445231
greshnik_05
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
помогите кто знает в чем причина!
...
Рейтинг: 0 / 0
SQL запрос в С# на FireBird
    #38445250
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
greshnik_05помогите кто знает в чем причина!Вечерком сваяю чаво-нить - выложу...
...
Рейтинг: 0 / 0
SQL запрос в С# на FireBird
    #38445254
greshnik_05
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex Kuznetsovgreshnik_05помогите кто знает в чем причина!Вечерком сваяю чаво-нить - выложу...

У меня только инсерт не работает остальное работает нормально!
...
Рейтинг: 0 / 0
SQL запрос в С# на FireBird
    #38446575
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Kuznetsovgreshnik_05помогите кто знает в чем причина!Вечерком сваяю чаво-нить - выложу...
Как и обещал - выкладываю...
...
Рейтинг: 0 / 0
SQL запрос в С# на FireBird
    #38446786
greshnik_05
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex Kuznetsov,
Спасибо.
У меня пару вопросов возникло.
1. в примере данные добавляются через датагрид, если данные добавляю через тексбоксы например. как быть?
2. где объявлен биндиг соурсе bsTest?
3. Вы использовали компонент "Набор данных" dsTest. это видно в окне обозревателя решений. Я делал так DataTable table = new DataTable(); это что то меняет?
...
Рейтинг: 0 / 0
SQL запрос в С# на FireBird
    #38446879
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
greshnik_05Alex Kuznetsov,
Спасибо.
У меня пару вопросов возникло.
1. в примере данные добавляются через датагрид, если данные добавляю через тексбоксы например. как быть?
2. где объявлен биндиг соурсе bsTest?
3. Вы использовали компонент "Набор данных" dsTest. это видно в окне обозревателя решений. Я делал так DataTable table = new DataTable(); это что то меняет?
Пожалуйста,

ответы на вопросы в доработанном примере.
Вся работа с базой выполнена без использования дизайнера - только код.
Добавление в гриде отключено - реализовано через использование текстбоксов.
Типизированного набора данных нет - использован простой DataTable.
...
Рейтинг: 0 / 0
SQL запрос в С# на FireBird
    #38446977
greshnik_05
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex Kuznetsov, спасибо. Понял в чем была моя ошибка.
Не могли вы разъяснить в чем разница между методом описанным вами в примере и вот этим

Код: 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.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
private bool UpdateCommand()
        {
            using (FbConnection fbConnect = new FbConnection(FireBird.fbConnectionString.ToString()))
            {
                //открываем подключение
                fbConnect.Open();
                //создаем новую команду на UPDATE
                FbCommand SQLCommand = new FbCommand("Update SPR_SVOI SET NAME = @NAME, DIR = @DIR, TEL = @TEL, EMAIL = @EMAIL WHERE ID = 1", fbConnect);

                //обьявляем обьект класса FbParameter
                FbParameter parameter = new FbParameter();
                //задаем имя параметра
                parameter.ParameterName = "@NAME";
                //задаем значение параметра
                parameter.Value = textBoxName.Text;
                //задаем тип параметра
                parameter.FbDbType = FbDbType.VarChar;
                //передаем параметр обьекту класса FbCommand
                SQLCommand.Parameters.Add(parameter);

                //переопределяем обьект класса FbParameter
                parameter = new FbParameter();
                //задаем имя параметра
                parameter.ParameterName = "@DIR";
                //задаем значение параметра
                parameter.Value = textBoxDirector.Text;
                //задаем тип параметра
                parameter.FbDbType = FbDbType.VarChar;
                //передаем параметр обьекту класса FbCommand
                SQLCommand.Parameters.Add(parameter);

                //переопределяем обьект класса FbParameter
                parameter = new FbParameter();
                //задаем имя параметра
                parameter.ParameterName = "@TEL";
                //задаем значение параметра
                parameter.Value = textBoxTelefon.Text;
                //задаем тип параметра
                parameter.FbDbType = FbDbType.VarChar;
                //передаем параметр обьекту класса FbCommand
                SQLCommand.Parameters.Add(parameter);

                //переопределяем обьект класса FbParameter
                parameter = new FbParameter();
                //задаем имя параметра
                parameter.ParameterName = "@EMAIL";
                //задаем значение параметра
                parameter.Value = textBoxEmail.Text;
                //задаем тип параметра
                parameter.FbDbType = FbDbType.VarChar;
                //передаем параметр обьекту класса FbCommand
                SQLCommand.Parameters.Add(parameter);

                //выполняем запрос 
                try
                {
                    SQLCommand.ExecuteNonQuery();
                    return true;
                }
                catch (FbException FbExcept)
                {
                    MessageBox.Show("Сообщение ошибки: " + FbExcept.Message + ". Номер ошики: " + FbExcept.ErrorCode.ToString(), "Вниание!!!");
                    return false;
                }
            }//using; по выходу из using соединение сделает Dispose само
        }

 private void btnSave_Click(object sender, EventArgs e)
        {
            try
            {
                if (UpdateCommand())
                {
                    MessageBox.Show("Данные успешно сохраннены!", "Внимание!!!");
                }
            }
            catch (Exception except)
            {
                MessageBox.Show("Сообщение об ошибке: " + except.Message, "Вниание!!!");
            }
        }



Этот метод я использовал до того как посоветовали метод с биндинг сорсами.
...
Рейтинг: 0 / 0
SQL запрос в С# на FireBird
    #38447710
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
greshnik_05,

Ну что-ж, давайте разберём то, что Вы сделали:
1. В принципе правильная задумка...
Код: c#
1.
 using (FbConnection fbConnect = new FbConnection(FireBird.fbConnectionString.ToString())) 


2.На данном этапе соединение открывать не обязательно, т.к. оно не обязано быть открытым для создания объекта FbCommand
Код: c#
1.
2.
3.
4.
//открываем подключение
                fbConnect.Open();
                //создаем новую команду на UPDATE
                FbCommand SQLCommand = new FbCommand("Update SPR_SVOI SET NAME = @NAME, DIR = @DIR, TEL = @TEL, EMAIL = @EMAIL WHERE ID = 1", fbConnect);

Соединение можно установить непосредственно перед вызовом процедуры

3.Создание параметров
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
//обьявляем обьект класса FbParameter
                FbParameter parameter = new FbParameter();
                //задаем имя параметра
                parameter.ParameterName = "@NAME";
                //задаем значение параметра
                parameter.Value = textBoxName.Text;
                //задаем тип параметра
                parameter.FbDbType = FbDbType.VarChar;
                //передаем параметр обьекту класса FbCommand
                SQLCommand.Parameters.Add(parameter);

- подход верен за исключением некоторых моментов. Думаю, вот так будет более корректно
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
//обьявляем обьект класса FbParameter
                FbParameter parameter = new FbParameter();
                //задаем имя параметра
                parameter.ParameterName = "@NAME";
                // указываем направление параметра
                parameter.Direction = ParameterDirection.Input
                //задаем тип параметра
                parameter.FbDbType = FbDbType.VarChar;
                // Надо ещё указать размерность параметра
                parameter.Size = <размер> ;
                //задаем значение параметра
                parameter.Value = textBoxName.Text.Trim();
                //передаем параметр обьекту класса FbCommand
                SQLCommand.Parameters.Add(parameter);


4. Вот здесь я не уверен в том, что ожидаемый эффект от использования using будет достигнут:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
                //выполняем запрос 
                try
                {
                    SQLCommand.ExecuteNonQuery();
                    return true;
                }
                catch (FbException FbExcept)
                {
                    MessageBox.Show("Сообщение ошибки: " + FbExcept.Message + ". Номер ошики: " + FbExcept.ErrorCode.ToString(), "Вниание!!!");
                    return false;
                }

моя неуверенность происходит от того, что Вы выходите из процедуры до окончания блока using.

Теперь по поводу Вашего вопроса о том, в чём разница между методом приведённым в моём примере с использованием binding и Вашим методом. На мой взгляд она очевидна. В случае с использованием binding указанием значений параметров перед вызовом процедуры занимается объект DataAdapter на основание информации из DataTable. Соответственно он-же и занимается установлением связи с сервером, и т.д. В Вашем-же методе Вы сами устанавливаете параметры вызова процедуры и вызываете её.

В Вашем варианте нет принципиальной ошибки, т.к. всё зависит от задачи, архитектуры решения и т.д. Т.е. какой подход выбрать - решать Вам.
...
Рейтинг: 0 / 0
17 сообщений из 67, страница 3 из 3
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / SQL запрос в С# на FireBird
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]