Muhammed Elwany Ответов: 2

Как открыть соединение один раз а не два


я хочу сделать все возможное для этого кода, я хочу открыть соединение один раз и связать два выпадающих списка . код работал правильно, но я хочу узнать, как лучше всего использовать открытое и закрытое соединение один раз
string str1 = "select eq_type_name + '-'+ eq_type_name_arabic as txtField,eq_type_no from equit_type;";
               string str2 = "SELECT ID, name FROM MendCompany";
               OleDbConnection conn = new OleDbConnection(cc);
               OleDbCommand cmd = new OleDbCommand(str1, conn);
               conn.Open();

               Dr_device.DataSource = cmd.ExecuteReader();
               Dr_device.DataTextField = "txtField";
               Dr_device.DataValueField = "eq_type_no";
               Dr_device.DataBind();
               conn.Close();
               conn.Open();
               cmd.CommandText = str2;
               Dr_kind0.DataSource = cmd.ExecuteReader();
               Dr_kind0.DataTextField = "name";
               Dr_kind0.DataValueField = "ID";
               Dr_kind0.DataBind();
               conn.Close();
               Dr_device.Items.Insert(0, " اختر الجهاز");
               Dr_kind0.Items.Insert(0, "**اختر شركة الإصلاح**");


Что я уже пробовал:

открытое соединение 2 раза это моя усталость

[no name]

Вы думаете, что Конн.Close () имеет к этому какое-то отношение?

2 Ответов

Рейтинг:
1

Wendelius

Как уже было сказано, вы закрываете и снова открываете соединение, и у вас нет никаких причин для этого. Afetr открывает соединение, извлекает необходимые данные, выполняет нужные операции и затем закрывает соединение. Нет никаких ограничений на количество операций, разрешенных в пределах одного соединения.

При работе с соединениями, командами и т. д.:
- используйте операторы using
- открывайте как можно позже
- закрыть как можно скорее (но делать все операции между ними)
- обрабатывать ошибки

Например, взгляните на Правильное выполнение операций с базой данных[^]


Рейтинг:
0

David_Wimbley

Нет, это одна из тех вещей, которые слишком очевидны, и я чувствую, что что-то упускаю. Но в вашем коде у вас есть

Dr_device.DataBind();
               conn.Close();
               conn.Open();
               cmd.CommandText = str2;


Вы закрываете соединение и снова открываете его сами. Уберите Конн.Близко и Конн.Откройте, как вы открываете соединение ранее в коде и закрываете его дальше в коде.


Muhammed Elwany

это приведет к ошибке