Autor Beitrag
hasso84
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Do 07.06.12 13:48 
Hallo,

irgendwie bin ich erade zu doof....
Ich benutze eine embedded Firebird SQL Datenbank und möchte einfach ein blödes DataSet füllen um danach ein DataGridView damit zu füllen. Allerdings scheitere ich schon am füllen des DataSets aus der Datenbank.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
private DataSet readUser(string name)
{
    FbConnection myCon = new FbConnection(connectionString);
    myCon.Open();
    sqlQuery = "SELECT * FROM " + name;
    FbDataAdapter adapter = new FbDataAdapter(sqlQuery, myCon);
    DataSet mySet = new DataSet();
    adapter.Fill(mySet);
    myCon.Close();
    return mySet;
}


Das DataSet ist nach dem "Fill" einfach leer, die "HasRows" Property steht auf false.
In der Datenbank befinden sich aber Werte und der SQL.Befehlt funktioniert auch, da wenn ich einen FbCommand und einen FbReader benutze alle Werte schön auslesen kann. Nur über der blöden Adapter und das Fill tut sich nix.

Ich hab jetzt schon 50000 Tutorials angeschaut und überall wird es so gemacht, ich blick einfach nicht was ich übersehe...

Viele Grüße
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 07.06.12 14:43 
Sehe jetzt auch keinen prinzipiellen Fehler.

Benutzt du ein einen relativen oder absoluten Pfad auf die fdb Datei? Liegt die lokal oder auf einem Network Share? Bist du dir sicher von deinem Programm aus auf die richtige fdb Datei zu gucken?

Es hilft vielleicht auch deine Funktion etwas zu vereinfachen um das Problem deutlicher zu erkennen. Du erzeugst ein neues Dataset. Heißt für mich mehr als dieses eine Ergebnis interessiert dich in diesem DataSet nicht. Da ist ein DataSet zu viel des guten. Eine DataTable reicht völlig. Die Benamsung deiner Funktion und des Parameters ist merkwürdig. Bei einer Funktion die readUser heißt (Funktionsnamen biete groß schreiben das hier ist c# nicht Java) und in die ein string reingeht erwartet man das das der Username ist und nicht ein Tabellenname. Oder sieht dein Model eine Tabelle je User vor?
hasso84 Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Do 07.06.12 17:28 
user profile iconRalf Jansen hat folgendes geschrieben Zum zitierten Posting springen:

Benutzt du ein einen relativen oder absoluten Pfad auf die fdb Datei? Liegt die lokal oder auf einem Network Share? Bist du dir sicher von deinem Programm aus auf die richtige fdb Datei zu gucken?


Zu Testzwecken im Moment ein absoluten, später natürlich einen relativen. Die FB liegt lokal auf der Platte, ist ja nur eine einzige Datei.
Es ist auch 100% alles korrekt damit, weil ich kann die DB ja normal über einen DataReader auslesen und es stimmt alles, ich krieg nur über den Adapter nix in das DataSet.

user profile iconRalf Jansen hat folgendes geschrieben Zum zitierten Posting springen:

Es hilft vielleicht auch deine Funktion etwas zu vereinfachen um das Problem deutlicher zu erkennen. Du erzeugst ein neues Dataset. Heißt für mich mehr als dieses eine Ergebnis interessiert dich in diesem DataSet nicht. Da ist ein DataSet zu viel des guten. Eine DataTable reicht völlig.


Hab es schon mit beidem probiert, hat auch nichts geändert :(

user profile iconRalf Jansen hat folgendes geschrieben Zum zitierten Posting springen:

Die Benamsung deiner Funktion und des Parameters ist merkwürdig. Bei einer Funktion die readUser heißt (Funktionsnamen biete groß schreiben das hier ist c# nicht Java) und in die ein string reingeht erwartet man das das der Username ist und nicht ein Tabellenname. Oder sieht dein Model eine Tabelle je User vor?


Ja das ist der Username, ich habe für jeden User eine Tabelle. Mir ist auch klar dass das ab x User nicht mehr sehr performant ist, aber ich bin ja nur Hobby programmierer und das Programm ist nur für Freunde und mich und so war die Umsetzung für mich am intuitivsten.