Połączenie z bazą było otwarte. Na statycznym parametrze działa, ale jak daje parametr "i" to mam błąd. chyba ze przedobrzyłem i nie można listy kombo wczytywać bezpośrednio z bazy danych pętlą for.
private void cBox_his_user_Loaded(object sender, RoutedEventArgs e) // ladowanie listy do ComboBoxa - w trakcie przebudowy
{
try // próba połaczenia z baza Oracle
{ // autoryzacja polaczenia
string connectionString = "Data Source = (DESCRIPTION = " +
"(ADDRESS = (PROTOCOL = TCP)(HOST = <host>)(PORT = 1521))" +
" (CONNECT_DATA = " +
"(SERVER = DEDICATED)" +
"(SERVICE_NAME = XE)" +
")" +
");User Id=user; password=pwd;";
OracleConnection con = new OracleConnection();
con.ConnectionString = connectionString;
con.Open(); // otwarcie bazy
OracleCommand cmd = new OracleCommand();
List<string> data = new List<string>(); // lista opcji z ComboBoxa
for (int i = 0; i < 4; i++) // petla tworzaca opcje do ComboBoca - finalnie bedzie pobierac nazwe usera z bazy
{
cmd.CommandText = $"SELECT first_name, last_name FROM users_tab WHERE User_id={i}";
cmd.Connection = con;
cmd.CommandType = System.Data.CommandType.Text;
OracleDataReader dr = cmd.ExecuteReader();
dr.Read();
data.Add(dr.GetString(0) + " " + dr.GetString(1));
// con.Close(); // zamkniecie bazy danych
}
var combo = sender as ComboBox; // zmienna przyjmujaca wartosc z ComboBoxa
combo.ItemsSource = data; // zrodlo opcji do wyboru
combo.SelectedIndex = 0; // aktualnie wybrana opcja (domyslnie 0 czyli pierwsza)
}
catch (Exception Ex)
{
MessageBox.Show("Lista ComboBoxa nie połaczyła się z bazą danych\n " + Ex.Message, "Error 1");
}