DataAdapter.De Remplissage(Dataset)
j'essaie d'obtenir des Données à partir d'une Base de données Access via OleDB dans un DataSet
.
Mais le DataSet
est vide après le Fill()
méthode. La déclaration de travaux et de retour 1 ligne quand je les déclencher manuellement dans 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);
Merci d'avance.
Nouveau code de travail:
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());
}
Maintenant Le bon code est affiché ci-dessus, avec un Dictonary d'accéder aux Données plus à l'aise.
espérons que quelqu'un va trouver de l'aide dans ce post. Merci à vous tous pour le faire fonctionner !
Avez-vous des tables dans de dataset? Je pense que vous devrez peut-être ajouter un peu de tables avec structure correspondante
Il n'est pas nécessaire. Le schéma est automatiquement renseigné
Il n'est pas nécessaire. Le schéma est automatiquement renseigné
OriginalL'auteur Marcus | 2011-06-30
Vous devez vous connecter pour publier un commentaire.
Si la requête est correcte, ce code va faire le travail à 100%
Encore ne précisant pas le problème, ni de fournir une solution pour elle. Je pense que ce n'est pas une réponse?
et comment puis-je obtenir les valeurs ? ds.Tables[0].Les lignes[0].ItemArray[0] ne fonctionnent pas
Je vois que vous appelez
ds.Tables[0].Rows[0]
à chaque fois. Ne pas le faire; cache à la place:var arr = ds.Tables[0].Rows[0].ItemArray
et à la prochaine utilisation justearr
OriginalL'auteur abatishchev
Vous avez besoin pour ce faire:
En fait, qu'est-ce DataSet1? Ce doit être "DataSet".
Désolé je ne peux pas voir les différences, OleDbDataAdapter le constructeur prend en premier paramètre, sélectionnez le texte de la commande et il est utilisé par SelectCommand. on dirait que vous a écrit la même chose de manière différente. Pouvez-vous expliquer?
im avec Reniuz, je pense que le nouveau code n'apporte pas de changements sur la logique
Merci de ne pas proposer de telles modifications. Il suffit d'éditer votre post (question)
Akram Shahda et @Reniuz. Le problème, c'est juste une faute de frappe je pense. Plutôt que d'écrire un jeu de données, l'utilisateur avait écrit DataSet1.
OriginalL'auteur Hasan Fahim
OriginalL'auteur sexy
cela fonctionne pour moi, il suffit de changer: Provider=Microsoft.Jet.OLEDB.4.0 (VS2013)
Luis Montoya
OriginalL'auteur Luis Montoya