nabilG
Messages postés20Date d'inscriptionmercredi 18 juin 2003StatutMembreDernière intervention19 juin 2009
-
16 avril 2009 à 09:34
titeoe
Messages postés433Date d'inscriptionsamedi 26 avril 2003StatutMembreDernière intervention 4 décembre 2009
-
17 avril 2009 à 08:23
Bonjour,
Je suis nouveau dans C# et je débute après plusieurs tutoriaux et après vérification que les Datasets Fortement Typées sont les mieux adaptées pour le développements d'applications.
Mais je coince depuis une journée sur cette petite application pour tester un DATASET TYPEE:
J'ai crée une appliaction windows Form qui est "Dataset" pour tester une dataset typée. j'ai crée une dataset avec l'assistant (DS_Customers). J'ai voulu utiliser ce fichier pour avoir un affichage datagridview de la nouvelle dataset instanciée à partire de cette DS_Customers mais....RIEN DU TOUT.
Un bouton et textbox ou il y'a un chiffre pour voir la ligne n°(Ce chiffre) quand on appuie sur le bouton.
A priori c'est un problème de porté de la variable DS_Customers...????
Pouvez-vous me dire où est le problème?
********************************************************
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Data.SqlClient;
using System.Text;
using System.Windows.Forms;
namespace Dataset
{
public partial class Form1 : Form
{
// Déclaration des Variables.....
private DS_Customers DS_Type;
public Form1()
{
InitializeComponent();
dataGridView1.DataSource = DS_Type;
}
privatevoid Form1_Load(object sender, EventArgs e)
{
// Avant l'affichage de la Form on obtient la connexion et les Datasets
Connecter();
}
privatevoid Connecter()
{
// Création de la Connexion
SqlConnection Maconnexion = new SqlConnection(@"Data Source=.\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True");
// Ouverture de la connexion (ne pas oublier)
Maconnexion.Open();
// Vérifier l'état de la connexion
if(Maconnexion.State == ConnectionState.Open)
{
MessageBox.Show("Connexion au Serveur OK","Etat de la Connexion",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
else
{
MessageBox.Show("Pas de connexion au Serveur","Etat de la Connexion",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
}
// Création de la commande
SqlCommand Macommande = new SqlCommand();
Macommande.Connection = Maconnexion;
Macommande.CommandType = CommandType.Text;
Macommande.CommandText = "Select * From Customers";
// Création de l'Adapter
SqlDataAdapter MonDA = new SqlDataAdapter(Macommande);
// Création de l'instance de la Dataset TYPEE DS_Customers pour utiliser
//les index en chiffres à la place des "CustomerID..."
DS_Customers DS_Type = new DS_Customers();
// Remplisssage de la Dataset Typée
MonDA.Fill(DS_Type, "Table des Clients");
// Après le remplisssage fermer la connexion
Maconnexion.Close();
}
privatevoid button1_Click(object sender, EventArgs e)
{
// select dans un TextBOX de la ligne de DATASET à afficher
int I = Convert.ToInt32(textBox1.Text);
leprov
Messages postés1160Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention21 octobre 201017 16 avril 2009 à 17:14
avec les dataset typés, tu ne devrais pas avoir besoin de :
-gérer toi meme la connexion (ni meme ten occuper)
-créer les requetes dans ton code
-utiliser un adapter faiblement typé
Dans l'assistant, tu ouvre l'onglet de visual studio "explorateurs de serveurs", tu paramètres la connection sur ta base de données, puis tu drag and drop tes tables sur ton schéma. Cela va te créer ta table avec le meme schéma que la DB et un dataadapter pour chaque table. Chaque dataadapter contient par défaut la requetes correspondant au "select *", mais tu peux aussi configurer le dataadapter pour ajouter une méthode pour chaque requete que tu souhaite faire. Ton code ne contiendra donc aucun SQL, aucune référence à la connexion, ni quoi que ce soit.Ta méthode d'affichage ne contiendrait plus que le code suivant :
CustomersTableAdapter adapter = new CustomersTableAdapter();
DS_Customers DS_Type = adapter.GetData();
Enfin, le fait que rien ne s'affiche vient du fait que tu as deux variables DS_Type. Une membre de la classe qui est celle utilisée dans button1_Click et qui n'est jamais remplie, et une deuxieme locale a la fonction Connecter qui est bien celle qui est remplie (puis perdue des que tu sors du scope de la fonction connecter). D'ailleurs, le compilo devrait te sortir un warning j'imagine...
nabilG
Messages postés20Date d'inscriptionmercredi 18 juin 2003StatutMembreDernière intervention19 juin 2009 16 avril 2009 à 18:12
marci pour la réponse très clair Leprov.
mais une question qui me tracasse et me laisse vraiment hésiter à utiliser les Dataset Typés :
- Quand j'éffectue une modification sur la structure d'une table que contient mon dataset via SQL (Ajouter ou renommer par exemple) je dois tout reprendre. Aussi, si je voux utiliser des procédures stockées, serait-il judicieux d'utiliser ces datasets?
-En ce qui concerne la déclaration de DS_Type, il fallait, je pense, la déclarer au départ dans la déclarration de variables "private DS_Customers DS_Type = new Ds_Customers;"
Merci de m'éclairer avant d'entamer la programmation de mon application de gestion de maintenance.
Avec mes remerciements
titeoe
Messages postés433Date d'inscriptionsamedi 26 avril 2003StatutMembreDernière intervention 4 décembre 20091 17 avril 2009 à 08:23
Bonjour,
Essais ceci : ********************************************************
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Data.SqlClient;
using System.Text;
using System.Windows.Forms;
namespace Dataset
{
public partial class Form1 : Form
{
// Déclaration des Variables.....
private DS_Customers DS_Type;
public Form1()
{
InitializeComponent();
}
privatevoid Form1_Load(object sender, EventArgs e)
{
// Avant l'affichage de la Form on obtient la connexion et les Datasets
Connecter();
dataGridView1.DataSource = DS_Type;
}
privatevoid Connecter()
{
// Création de la Connexion
SqlConnection Maconnexion = new SqlConnection(@"Data Source=.\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True");
// Ouverture de la connexion (ne pas oublier)
Maconnexion.Open();
// Vérifier l'état de la connexion
if(Maconnexion.State == ConnectionState.Open)
{
MessageBox.Show("Connexion au Serveur OK","Etat de la Connexion",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
else
{
MessageBox.Show("Pas de connexion au Serveur","Etat de la Connexion",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
}
// Création de la commande
SqlCommand Macommande = new SqlCommand();
Macommande.Connection = Maconnexion;
Macommande.CommandType = CommandType.Text;
Macommande.CommandText = "Select * From Customers";
// Création de l'Adapter
SqlDataAdapter MonDA = new SqlDataAdapter(Macommande);
// Remplisssage de la Dataset Typée
MonDA.Fill(this.DS_Type, "Table des Clients");
// Après le remplisssage fermer la connexion
Maconnexion.Close();
}
privatevoid button1_Click(object sender, EventArgs e)
{
// select dans un TextBOX de la ligne de DATASET à afficher
int I = Convert.ToInt32(textBox1.Text);