verwendetes Datenbanksystem: <ORACLE>
Guten Tag zusammen,
ich erstelle eine WPF Anwendung , die DataGrid hat und mit ORACLE verbunden sein sollte. Leider die Ergebnisse werden nicht im DataGrid dargestellt. Ich bin generell neu in C#. Danke für die Hilfe
Hier ist der Code
private void Window_Loaded(object sender, RoutedEventArgs e)
{
try
{
String connectionString = "Data Source=DWH; User Id=readonly; Password=********;";
OracleConnection con = new OracleConnection();
con.ConnectionString = connectionString;
con.Open();
OracleCommand cmd = new OracleCommand();
cmd.CommandText = "SELECT * FROM SALARIES";
cmd.Connection = con;
OracleDataReader dr = cmd.ExecuteReader();
DataGrid dg = new DataGrid();
dr.Read();
}
catch (Exception exp) { }
}
Bitte verwende den Debugger; zudem unterdrückst Du jegliche Exception.
[Artikel] Debugger: Wie verwende ich den von Visual Studio?
Wir können auch nicht riechen, ob da jetzt eine Exception auftaucht oder nicht 😉
Ich hoffe Dir ist zudem bewusst, dass Du zwar nen DataGrid instanziierst und den DataReader liest, aber weder was mit dem Ergebnis noch mit dem DataGrid machst.
Der DataReader kann ja nicht mit Magie entscheiden, was mit seinem Ergebnis passiert.
Bitte beachte zudem [Artikel] Drei-Schichten-Architektur
In WPF sollte man immer mit MVVM arbeiten; dafür ist WPF ausgelegt.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Ich denke, das könnte auch eine passende Lektüre sein:
[FAQ] Wie finde ich den Einstieg in C#?
Nichts gegen dich, der_sharky, jeder hat Mal klein angefangen, aber Du wirst langfristig einfach besser voran kommen, wenn Du ein Buch liest, als wenn Du alles selber recherchierst 😉
Dein konkretes Thema wird in den Büchern (zumindest Einem) natürlich auch behandelt.
Ok erstmal Danke für die Antwort an alle. Ich habe eine zweite Frage.
Ich habe in der xaml Datei eine DataGrid eingefügt. Wenn ich diese DataGrid mit Daten aus Oracle befüllen möchte, sollte ich davor die Spalten drin vordefinieren und wenn nein welche Möglichkeiten gibt dass sich die DataGrid automatisch anpasst.
Grüße
<Window x:Class="OPEN_ORDERS_ORACLE_TABLE.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:OPEN_ORDERS_ORACLE_TABLE"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800" Loaded="Window_Loaded">
<Grid Height="419" VerticalAlignment="Top">
<DataGrid Margin="10,40,10,70"/>
</Grid>
</Window>
Erstes Ergebnis bei Google: WPF DataGrid Control.
Evtl. hilft dabei auch: [Artikel] MVVM und DataBinding
Bitte beachte auch: [Hinweis] Wie poste ich richtig?
Weeks of programming can save you hours of planning
Danke an alle für die Hilfe hier ist meine Lösung:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
try
{
String connectionString = "Data Source=DWH; User Id=readonly; Password=*******;";
OracleConnection con = new OracleConnection();
con.ConnectionString = connectionString;
con.Open();
OracleCommand cmd = con.CreateCommand();
cmd.CommandText = "SELECT * FROM SALARIES";
cmd.CommandType = CommandType.Text;
OracleDataReader dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dr);
DataGrid1.ItemsSource = dt.DefaultView;
con.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
<Window x:Class="OPEN_ORDERS_ORACLE_TABLE.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:OPEN_ORDERS_ORACLE_TABLE"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800" Loaded="Window_Loaded">
<Grid Height="419" VerticalAlignment="Top">
<DataGrid x:Name ="DataGrid1" ItemsSource="{Binding}" Margin="10,40,10,70"/>
</Grid>
</Window>
Auch wenn das oben schon gesagt wurde. Nochmal verstärkt für die Nachwelt.
Auch wenn MVVM nicht gerade einfach für Anfänger aussieht, sollten man das so nicht bauen!
Auch wenn der Code erstmal das tut was er tuen soll.
Später wird sowas die Wartungshölle!
All dein Code in Window_Loaded zu packen ist etwa so wie: Beim Hausbau die Heizungsinstallation im Vorgarten installieren zu lassen - Kann man machen, ist halt nicht wirklich gut
http://dotnet-paderborn.azurewebsites.net/
All dein Code in Window_Loaded zu packen ist etwa so wie: Beim Hausbau die Heizungsinstallation im Vorgarten installieren zu lassen - Kann man machen, ist halt nicht wirklich gut
Der Vergleich hinkt. Eher müssten Vorgarten und Wasseranschlüsse im Wohnzimmer verbaut sein.
Wissen ist nicht alles. Man muss es auch anwenden können.
PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |