DataAdapter.Fill(Dataset)
ich versuchen, einige Daten aus einer Access-Datenbank via OleDB in einer DataSet
.
Aber die DataSet
ist leer nach der Fill()
Methode. Die gleiche Aussage arbeitet und-Rückgabe 1 Zeile, wenn ich Sie auslösen manuell in D*.
OleDbConnection connection =
new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Inventar.accdb");
DataSet1 DS = new DataSet1();
connection.Open();
OleDbDataAdapter DBAdapter = new OleDbDataAdapter(
@"SELECT tbl_Computer.*, tbl_Besitzer.*
FROM tbl_Computer
INNER JOIN tbl_Besitzer ON tbl_Computer.FK_Benutzer = tbl_Besitzer.ID
WHERE (((tbl_Besitzer.Vorname)='ma'));",
connection);
DBAdapter.Fill(DS);
Vielen Dank im Voraus.
Neuen funktionierenden code:
DataSet ds = new DataSet();
OleDbDataAdapter DBAdapter = new OleDbDataAdapter();
OleDbConnection connection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Inventar.accdb");
string query = @"
SELECT tbl_Computer.*, tbl_Besitzer.*
FROM tbl_Computer
INNER JOIN tbl_Besitzer ON tbl_Computer.FK_Benutzer = tbl_Besitzer.ID
WHERE (((tbl_Besitzer.Vorname)='ma'));";
connection.Open();
using (OleDbCommand command = new OleDbCommand(query, connection))
using (OleDbDataAdapter adapter = new OleDbDataAdapter(command))
{
adapter.Fill(ds);
}
Dictionary<string, string> DictValues = new Dictionary<string, string>();
for (int i = 0; i <= ds.Tables[0].Rows[0].ItemArray.Length - 1; i++)
{
MessageBox.Show(ds.Tables[0].Rows[0].ItemArray[i] + " -- " + ds.Tables[0].Rows[0].Table.Columns[i]);
DictValues.Add(ds.Tables[0].Rows[0].Table.Columns[i].ToString(), ds.Tables[0].Rows[0].ItemArray[i].ToString());
}
Nun Der Richtige code ist oben gepostet, mit einem Dictonary Zugriff auf die Daten komfortabler.
hoffe jemand findet Hilfe in diesem Beitrag. Danke Euch allen für die arbeiten !
Haben Sie alle Tabellen im dataset? Ich glaube, möglicherweise müssen Sie fügen Sie einige Tabellen mit der entsprechenden Struktur
Es ist nicht erforderlich. Schema wird automatisch aufgefüllt
Es ist nicht erforderlich. Schema wird automatisch aufgefüllt
InformationsquelleAutor Marcus | 2011-06-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn die Abfrage richtig ist, diesen code wird die Arbeit 100%
Immer noch keine Angabe des Problems, noch die Bereitstellung einer Lösung für Sie. Ich denke, es ist nicht eine Antwort?
und wie bekomme ich die Werte ? ds.Tables[0].Zeilen[0].ItemArray[0] dont work
Ich sehe, Sie nennen
ds.Tables[0].Rows[0]
jeder Zeit. Tun Sie das nicht; cache statt:var arr = ds.Tables[0].Rows[0].ItemArray
und der nächsten Verwendung einfacharr
InformationsquelleAutor
Müssen Sie dies tun:
By the way, was ist das DataSet1? Diese werden "DataSet".
Sorry, ich kann nicht sehen, die Unterschiede, OleDbDataAdapter Konstruktor nimmt den ersten parameter so wählen Sie den Befehl text, und es wird von SelectCommand. sieht aus wie Sie schrieb, dieselbe Sache auf unterschiedliche Weise. Können Sie das erklären?
im mit Reniuz, ich denke, dass der neue code bringt keine änderungen an der Logik
Bitte nicht vorschlagen, solche änderungen. Einfach Bearbeiten Sie Ihre eigenen post (der Frage)
Akram Shahda und @Reniuz. Das problem ist nur ein Tippfehler, denke ich. Anstatt das schreiben DataSet, die der user geschrieben hatte, DataSet1.
InformationsquelleAutor
InformationsquelleAutor
es für mich funktioniert, ändern Sie einfach: Provider=Microsoft.Jet.OLEDB.4.0 (VS2013)
Luis Montoya
InformationsquelleAutor