Comment puis-je exécuter une Instruction Select en C# à partir d'une base de données Access avec une variable?

Je suis en train de créer une application Windows Form en C#, surtout juste pour la pratique de ce que j'ai appris à l'université. Ma base de données est une base de données Access, composé de trois tableaux (SetIndex, SetSong [une table de jonction], et de la Chanson). Nous n'avons jamais appris à utiliser une base de données dans une application, il suffit dans un site web. La plupart de ce que j'ai appris, j'ai appris par essais et erreurs.

J'ai un combobox liste avec les dates de la SetIndex tableau, la valeur de l'ID (clé primaire de SetIndex). J'ai besoin d'être en mesure d'interroger la base de données avec une instruction select qui dit setindex.id = setsong.setid et setsong.songid = chanson.id et setIndex.id = une variable, la valeur choisie dans la liste déroulante. J'ai écrit une instruction select dans l'Accès à l'aide (setindex.id = ?) qui fonctionne très bien dans l'Accès, mais je n'ai pas compris comment le faire en C#. J'ai trouvé des réponses sur la façon d'utiliser les paramètres et comment interroger plusieurs tables, mais rien qui combine les deux.

Donc, il y a un moyen de le faire dans le code?

C'est la dernière chose que j'ai essayé:

using (OleDbConnection dataConnection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Mandy\Documents\Visual Studio 2010\Projects\SetManager1.3\SetManager1.3\SetManager.accdb"))
{
    using (OleDbCommand dataCommand = dataConnection.CreateCommand())
    {
        dataCommand.CommandText = "SELECT Title FROM Song WHERE Song.ID = SetSong.SongID AND SetIndex.ID=SetSong.SetID AND SetIndex.ID=@ID";
        dataConnection.Open();
        dataCommand.Parameters.AddWithValue("@ID", ID);
        DataTable table = new DataTable();
        OleDbDataAdapter adapter = new OleDbDataAdapter();
        adapter.SelectCommand = dataCommand;
        adapter.Fill(table);
        bindingSource1.DataSource = table;
        dataGridView1.AutoResizeColums(DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);
        dataGridView1.ReadOnly = true;
        dataGridView1.DataSource = bindingSource1;
    }
}

ID est une variable int qui vient d'une classe globale qui prend la valeur de l'ID de la boîte combo d'inscription, les dates (la valeur de la sélection SetIndex.ID). J'ai testé pour vous assurer que cette partie a été de travailler à l'aide d'un label et d'un bouton et il semble être de la récupération de la valeur, de le stocker dans GlobalClass.ViewBySetDate, et de le convertir à mon int ID de l'amende juste.

Mais ce qui est à venir avec le message d'erreur "Pas de valeur donnée pour un ou plusieurs paramètres obligatoires."

Est-il un meilleur travail, façon de le faire? Ou, si non, comment puis-je corriger l'erreur?

Je vous remercie à l'avance,

Mandy

Edit: j'ai changé le Sélectionner l'énoncé suivant:

SELECT song.Title FROM SetIndex INNER JOIN (song INNER JOIN SetSong ON song.ID = SetSong.SongID) ON SetIndex.ID = SetSong.SetID WHERE ((set index.id) =[?]);

L'erreur n'est plus, mais le datagridview est encore vierge.

InformationsquelleAutor user1325194 | 2012-04-10