2009-05-22 6 views
0

Ich versuche, einige Daten aus einer SQLite-Datenbank zu ziehen, so dass ich ein Gridview in meiner GUI füllen kann: hier ist der Code, der die Datatable zurückgibt:SQLiteDataAdapter füllt nicht die Datentabelle angegeben

DataTable table = new DataTable(); 

SQLiteDataAdapter adapter = new SQLiteDataAdapter(this.command.CommandText, this.connection); 
adapter.Fill(table); 

return table; 

Für Nach dem Aufruf von adapter.Fill ist die DataTable immer noch nicht mit etwas gefüllt. Bisher habe ich überprüft, dass der Befehlstext korrekt ist und dass die Verbindung die richtige Verbindungszeichenfolge enthält. Beide werden erfolgreich in anderen Teilen der Anwendung verwendet. Es scheint keine Ausnahmen zu geben ... Gibt es sonst noch einen Ort, wo ich nach Ärger suchen sollte? Benutze ich die API falsch?

Danke!

Antwort

1

Das sieht wie richtige Verwendung aus.

Eine Sache zu überprüfen - nach der Füllung Sie sagen, die Datentabelle ist nicht aufgefüllt. Haben Sie nur Rows.Count überprüft? Was ist mit Säulen? Wenn Fill Spalten erstellt, die mit Ihrer SELECT-Anweisung übereinstimmen, aber keine Zeilen vorhanden sind, wissen Sie, dass der Code funktioniert, aber entweder ein Problem mit Ihrer Abfrage besteht oder Sie nicht die gleiche Datenbank verwenden.

+0

Nun, ich werde verdammt sein. Die DataTable wird gefüllt, ich habe gerade nicht die richtigen Mitglieder in der QuickWatch gesucht: Spalten wurden korrekt geladen und eine Anzahl von Zeilen zurückgegeben. Dies löst nicht wirklich mein zugrunde liegendes Problem, aber Ihr Rat hat mich dazu gebracht, die Probleme anderswo zu verstehen. –

+0

@sweeny was war das REALE Problem? Ich erhalte ähnliche Fehler. Wenn Sie es gelöst haben, lassen Sie es uns bitte wissen. – Kiril

0

Gibt es einen Konstruktor, mit dem Sie den Befehl einfach direkt übergeben können?

+0

Es gibt keinen solchen Konstruktor für DataTable oder DataGridView. Hast du das gemeint? –

+0

Ich vermute, er meint damit den Adapterkonstruktor. – CSharpAtl

+0

Der Adapterkonstruktor verwendet den Befehl direkt. Es ist das erste Argument. –