begin process at 2010 02 10 00:23:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Base de données

 > 

SQL Server

 > 

Créer et lancer une requête SQL en C#


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Créer et lancer une requête SQL en C#

vendredi 4 janvier 2008 à 18:55:00 | Créer et lancer une requête SQL en C#

CleemS

Salut à tous :)

Alors voilà mon problème, je crois que j'ai à peu près réussi à lier ma BDD (SQL Server) à mon programme (Visual C# 2008 Express) avec ce code :

        IDbConnection dbconn = dbfactory.CreateConnection();
        dbconn.Open();
        IDbCommand dbcomm = dbconn.CreateCommand();
        dbcomm.Connection = dbconn;

Tout en mettant dans les usings :

        using System.Data.Common;
        using System.Configuration;

Voilà, déjà manque-t'il quelque chose?

Ensuite, j'ai réussi à enregistrer un nouveau film (vidéothèque :p) entré par l'utilisateur (Titre, durée, genre & avis) avec ce code :

         Film F1 = new Film(textBox1.Text, textBox2.Text, comboBox1.Text, comboBox2.Text);

Mais maintenant voilà, j'aimerais enregistrer ce film F1 dans ma table 'Film' de ma BDD. Comment faire? Requête SQL?
Le problème est que je ne sais pas comment et avec quoi créer et lancer ma requête.

Merci d'avance,
CleemS!
samedi 5 janvier 2008 à 13:34:39 | Re : Créer et lancer une requête SQL en C#

Le grand Jisay

Salut,

Si je comprend bien film est le nom d'une classe que tu as créée. Ton constructeur doit être du style :


    private string m_nom_film;
    private string m_genre_film;
    private string m_auteur_film;

    public film(string nom_film, string genre_film, string auteur_film)
    {
       this.m_nom_film = nom_film;
       this.m_genre_film = genre_film;
       this.m_auteur_film = auteur_film;
    }
    // le faire 3 fois pour tous les membres privés => on aura nom, genre et auteur
    public string nom
   {
       Get{return this.m_nom_film;}
    }

Donc, si tu veux enregistrer ton film dans ta table, il te faudra faire une requête d'insertion. Ici je vais faire une requête INSERT dans un 'IDbCommand' avec ce que je pense être ton constructeur de ta classe film. Supposons aussi que les noms des colonnes de ta table 'Film' soient : nomdufilm, genredufilm et auteurdufilm, la requêtes sera du style :

IDbCommand command = new IDbCommand(); (je peux me tromper pour ca mais essaie)
command.commandtext = "INSERT INTO Film(nomdufilm,genredufilm,auteurdufilm) VALUES('"+F1.nom+"','"+F1.genre+"','"F1.auteur')";
command = dbconn.CreateCommand();
command.ExecuteNonQuerry();

Et voila, je pense que c'est à ca que ca doit ressembler, regarde si ca va correctement,  il y a peut-être quelques fautes car j'utilise une autre méthode un peu plus simple. Tu peux aussi utiliser des bloc Try Catch pour voir si il y a des erreurs et voir où sont les erreurs.

A+, bonne programmation,

Le Grand Jisay
samedi 5 janvier 2008 à 14:05:18 | Re : Créer et lancer une requête SQL en C#

CleemS

Je te remercie beaucoup, sa me permet d'avancer ^^

Seulement voilà, mon programme n'apprécie pas trop certaines commandes apparemment, voici ton code que j'ai modifié :

            IDbCommand command = new IDbCommand();
            command.commandtext = "INSERT INTO Film(Titre, Duree, Genre, Avis, Affiche) VALUES('"+F1.GetTitre()+"','"+F1.GetDuree()+"','"+F1.GetGenre()+"','"+F1.GetAvis()+"','"+F1.GetAffiche()+"')";
            command = dbconn.CreateCommand();
            command.ExecuteNonQuerry();


Mais il y a des erreurs sur ce que j'ai souligné, pour la 1ère c'est : "Cannot create an instance of the abstract class or interface 'System.Data.IDbCommand'"...

Me manque des usings?

samedi 5 janvier 2008 à 17:06:21 | Re : Créer et lancer une requête SQL en C#

Le grand Jisay

Re,

Je ne vois pas trop, tu pourrais me dire avec quelle type de base de données tu travailles ? ACCESS, SQL, ORACLE,... ?
Et aussi avec quel logiciels tu programmes, Visual Studio je suppose, mais 2003 ou 2005 ?

Si tu travailles avec Visual Studio 2005, la manipulation de données est plus simple mais si tu es toujours en 2003, je t'expliquerai avec l'ancienne méthode...

A+,

Le Grand Jisay
samedi 5 janvier 2008 à 17:08:46 | Re : Créer et lancer une requête SQL en C#

CleemS

J'utilise SQL Server pour ma BDD, mais j'utilise Visual C# 2008 Express (j'ai pris la 1ère version gratuite que j'ai trouvé ^^).
samedi 5 janvier 2008 à 17:28:50 | Re : Créer et lancer une requête SQL en C#

Le grand Jisay

Ok ok je vois, j'avais oublié que cette version était sortie


Pour que ça soit plus simple, utilise l'espace de noms : System.Data.SqlClient
Maintenant pour ta requête, je te donne la marche a suivre :

- sur ta Form, tu ajoutes (à partir de la boite à outils) un objet de type SqlConnection (si c'est pas dans la boite à outils, tu ajoutes en cliquant droit dans la boite puis choisir les éléments). Tu modifies la propriété : 'ConnectionString' c'est-à-dire ta base de données Films. Ne change pas son nom, ça doit être SqlConnection1.
- tu ajoute de la même façon un objet de type sqlcommand. Tu modifies la propriété : Connection tu mets SqlConnection1. Ne change pas son nom non plus.
- Voila maintenant tu as créé tes objets pour pouvoir faire ta requête, maintenant dans ton code tu y places :

            try
            {
                this.sqlConnection1.Open();
                this.sqlCommand1.CommandText = "INSERT INTO Film(Titre, Duree, Genre, Avis, Affiche) VALUES('" + F1.GetTitre() + "','" + F1.GetDuree() + "','" + F1.GetGenre() + "','" + F1.GetAvis() + "','" + F1.GetAffiche() + "')";
                this.sqlCommand1.ExecuteNonQuery();
            }
            catch(SqlException ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                this.sqlConnection1.Close();
            }

Voila, c'est la méthode qui nécessite le moins de ligne de code et je suppose qu'elle fonctionne aussi avec Visual Studio 2008.

A+, Le Grand Jisay
dimanche 6 janvier 2008 à 03:44:02 | Re : Créer et lancer une requête SQL en C#

CleemS

Re Jisay, merci beaucoup sa m'a bien fait avancer, mais sa me génère encore une petite erreur, sa doit venir de la propriété 'ConnectionString' de mon SqlConnection, je n'ai pas trop compris quoi mettre dans le champ, et quoique je mette il me dit :

"Format of the initialization string does not conform to specification starting at index 0."

Que faire?
dimanche 6 janvier 2008 à 10:59:48 | Re : Créer et lancer une requête SQL en C#

Le grand Jisay

Oui, c'est un peu compliqué le format de ConnectionString.

Quand tu as ajouté ton SqlConnection à ta Form, dans la propriété ConnectionString, tu cliques bien sur la flèche tout à droite ? Là il faut choisir nouvelle connexion, puis parcourir et tu vas sur parcourir et tu vas chercher ta base de données SQL qui se trouve sur ton disque dur et normalement Visual Studio te génère tout seul comme un grand la ConnectionString.

Tu peux aussi ajouter ta base de données à ta solution. Je m'explique : dans ton explorateur de solution (sous Visual Studio) tu clique droit sur le nom de ton projet, ensuite Ajouter\Un élément existant et là tu vas chercher ta base de données SQL sur ton disque dur. Ensuite, si tu fais comme ca ou si c déjà comme ca que tu as procédé pour ta base de données, tu vas dans les propriétés de ta ConnectionString, clic sur la flèche à droite et au dessus de 'Nouvelle Connexion', tu choisis la base de données que tu as importée a ton projet.

Voila je pense avoir bien expliqué, je n'ai jamais eu cette erreur donc je ne sais pas trop si ca vient de la mais bon, ca c'est la bonne technique.

A+, Le Grand Jisay
dimanche 6 janvier 2008 à 15:35:21 | Re : Créer et lancer une requête SQL en C#

CleemS

Je te remercie pour ces explications, mais je n'ai pas de petite flèche à droite de 'ConnectionString', j'ai bien ajouté ma BDD en cliquant droit sur mon projet > Add > Existing Item, je suis aller chercher ma BDD... Mais sa ne me fournit pas la ligne (ni la flèche pour chercher sa) a ma ConnectionString.

Cependant, sur mon SqlConnection1, je suis aller voir dans Application Settings > Property Bindings (là y'a trois petits points du genre parcourir) > ConnectionString (la revoilà :p). Là j'ai bien une petite flèche, mais quand je choisi "DivX_DataConnectionString" (DivX étant le nom de ma BDD) il me génère une erreur :

"Object of type 'Microsoft.VSDesigner.VSDesignerPackage.SerializableConnectionString' cannot be converted to type 'System.String'."

Donc je vois pas, car même en allant chercher le DataSet qu'il me propose, il veut pas...


dimanche 6 janvier 2008 à 15:57:48 | Re : Créer et lancer une requête SQL en C#

CleemS

Je crois avoir résolu le problème, j'ai mis : "Data Source=C:\Program Files\Microsoft SQL Server\MSSQL\Data\DivX_Data.MDF" dans la ConnectionString, et il accepte ce type de ligne.

Malheureusement j'ai encore une erreur lors de l'ajout d'un Film : "There is a file sharing violation. A different process might be using the file. [ C:\Program Files\Microsoft SQL Server\MSSQL\Data\DivX_Data.MDF ]".

Etrange car à part SQL Server et mon programme, rien n'utilise ma BDD, et si je la désactive sa ne marche pas non plus... Etrange je ne comprends pas. =/

1 2

Cette discussion est classée dans : text, sql, requête, film, dbconn


Répondre à ce message

Sujets en rapport avec ce message

Problème lors de l'exécution d'une requête SQL [ par vonbier ] Salut,je débute en C# et j'ai un problème lors de l'exécution d'une requête toute simple sur SQL Server 2000.Voici mon codestring conn = "server=HECTO SQL ds mon code...pb de DataReader ??? [ par sphaxslayer ] Salut tout l'monde, j'ai un ch'tiot souci avec du SQL dans mon code...voilà j'ai réussi à faire ma connexion Oracle (enfin! me diras-tu Jus lol merci requête sql [ par kokoMelle ] j'ai besoin de faire une fonction en c# qui permet de chercher à partir du nom ou une partie du nom d'une personne toutes les informations qui le conc probs requête sql avec paramètres [ par patou1007 ] bonjour,je suis vraiment frustré car je n'arrive pas à faire une requête sql avec paramètres :voiçi une partie de mon code: public <FONT color=# modifier une requête d'un tableadapter par le code [ par beny1303 ] Bonjour à tous,Je bosse sur un projet avec un dataset typé. Sur toutes les tables que j'utilise dans la base sql, il existe un préfixe sur le nom de l [C#] [SQL] requête sur date [ par scoubidou944 ] un p'tit sushi de syntaxe dans une requete SQL je cherche à récupérer les anniversaires à souhaiter pour la date courante. De plus si le resultat de Récupération de SQL Nom champs [ par ahikaz ] Salut,Est ce que c'est possible de récupérer par exemple de cette requête :SELECT nom AS Test FROM employe WHERE id=1;le libellé "Test" ? et cela aprè requête update access en c# [ par dinosors_evolution ] Je suis newbi en c#mon probléme est que lorsque je fait une requête update il me donne le message suivants:"Type de données incompatible dans l'expres Problème, requête SQL compliquée [ par dread_loque ] Bonjour tout le monde,Aujourd'hui un autre problème (non, je ne me suis pas fixé un objectif "un jour, un problème" mais bon...).Voilà, j'ai cette req Comment vérifier un enregistrement sur BD avec C#.. [ par namous35 ] Bonjour les amis,Voilà je suis un débutant en C# et je demande de l'aide concernant une vérification si un enregistrement existe sur une table SQL ou


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,045 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales