Base de donnée SQL sous VB 2005

[Résolu]
Signaler
Messages postés
141
Date d'inscription
mardi 18 mars 2003
Statut
Membre
Dernière intervention
3 octobre 2010
-
Messages postés
141
Date d'inscription
mardi 18 mars 2003
Statut
Membre
Dernière intervention
3 octobre 2010
-
Bonjour à tous

Pour la première fois, je m'essaye à la base de données SQL

En fait mon petit projet est très simple, j'ai une Base de Données avec
- un nom de table : Vemo
- une clé primaire : Numéro
- une clé : NOM
- une clé : Prénom

Comme c'est une premièr pour moi, je veux juste afficher dans une listBox l'ensemble des noms contenus dans ma base de données.

J'ai donc mis les instructions suivante
Imports

system.data

Imports System.Data.SqlClient
Public

Class FrmVmo

Dim MaConnexion
As SqlConnection =
New SqlConnection

Dim MaCommande
As SqlCommand = MaConnexion.CreateCommand()

Dim MyReader
As SqlDataReader = MaCommande.ExecuteReader()

Seulement après cela se gate...

Si je tape MaConnexion.Open()              rien ne se passe
MaCommande.CommandText = "SELECT NOM FROM VEMO"       rien non plus

Et là je crois que j'ai vraiment besoin de vous.
Peut-être qu'en créant ma base j'ai commis une erreur
Manque-t-il une instruction ?

Bref... Au secours, SVP

Merci par avance

7 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
ah, tu n'es pourtant pas trop mal parti.

Certes il te faut créer une connection et lui associer une commande. Mais il faut lui dire où elle doit se connecter, ouvrir la connection
Dim MaConnexion As SqlConnection = New SqlConnection
'exemple pour une base sur un serveur SQLServer2005
MaConnexion.ConnectionString = "Data Source=NomDuServeur;Initial Catalog=NomDeLaBase;Integrated Security=SSPI;"
MaConnexion.Open
Dim MaCommande As SqlCommand = MaConnexion.CreateCommand()

Il te faut ensuite donc indiquer quel type de commande tu utilise et donner la valeur de la commande
MaCommande.CommandType = CommandType.Text
MaCommande.CommandText = "SELECT NOM FROM VEMO"

Il faut ensuite executer cette commande et en récupérer (dans le cas présent) les résultats dans un DataReader
Dim MyReader As SqlDataReader = MaCommande.ExecuteReader()

Mais maintenant que tu as les résultats, il te faut les lire un à un pour les ajouter à ta listbox :
While reader.Read()
  TaListBox.Items.Add(reader(0))
End While

---- Sevyc64  (alias Casy) ---- <hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
J'ai oublier de dire que je garantie pas le fonctionnement de mon code, je l'ai fait en live sans tester, mais c'est dans ce sens là qu'il faut chercher.

Pour les différentes chaines de connections en fonction des bases c'est par ici --> http://www.connectionstrings.com/

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
141
Date d'inscription
mardi 18 mars 2003
Statut
Membre
Dernière intervention
3 octobre 2010

Merci pour ta réponse.

Par contre j'ai une interrogation qui concerne ton instruction

MaConnexion.ConnectionString = "Data Source=NomDuServeur;Initial Catalog=NomDeLaBase;Integrated Security=SSPI;

Tu marques "Source = NomDuServeur"

Mais je n'ai pas de serveur, je travaille uniquement à partir d'un ordinateur. Donc là je ne vois pas ce que je dois marquer.

Peux-tu m'en dire plus ?

Merci encore pour ta réponse
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Sur quel type de base travaille-tu? Access, SQLServer, SQLServer Express, MySQL, .....

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
141
Date d'inscription
mardi 18 mars 2003
Statut
Membre
Dernière intervention
3 octobre 2010

En fait je travaille à partir de Visual Basic Express. Et la seule base de données possible s'appelle "Base de données SQL".

Donc je vais être très sincère, je ne connais pas ce type de base de données.

Aupavant, je travaillais en VB6 avec des bases de données access

Donc je crois que tu me seras d'un grand secours (si ton temps le permet) pour m'aider.

En fait j'ai à coté de cela créé une petite base de données au format mdb. Et j'ai vu que je pouvais l'ajouter à mon projet.

Donc voilà, peux-tu m'expliquer les 2 méthodes (SQL et Access) et me conseiller. En effet je suppose que les bases SQL s'adressent plutot à des systèmes en réseau.
Dans mon cas je veux simplement créer une base toute simple pour tester et apprendre  le fonctionnement sous VB 2005

Alors je te dis merci par avance pour ton secours.
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
arf, je ne sais pas comment VBExpress gere les bdd, mais ça doit surrement etre avec du SQLServerExpress et donc tu accède directement à un fichier .mdf.
Il faudrait que tu fouille un peu pour voir si tu ne trouve pas quelque part un accès à la chaine de connexion. Je pense que tu dois avoir quelque chose du style : "Data Source= .\SQLEXPRESS;AttachDbFilename=NomDuFichierMdf;Integrated Security=True;Connect Timeout=30;User Instance=True"

Pour ce qui est d'Access, tu peux bien sur l'utiliser avec VB2005 (j'espère qu'avec la version Express aussi).

Pour cela, il ne te faut pas utiliser les outils d'accès de type SQL, mais ceux de type OleDB. le fonctionnement est strictement le même, il suffit juste de remplacer les objets, par exemple, remplacer SqlConnexion par OleDbConnexion, etc, ...

Par contre ta chaine de connection va dans ce cas devenir :
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydatabase.mdb;User Id=admin;Password=;"

Pour la gestion des bases de données (quand tu le fait par le code), l'avantage du .Net c'est que le code est toujours le même, ila toujours la même structure quelque soit les types de bases que tu utilise. Il faut jsute cahnger les objets utilisés :

Pour ODBC : OdbcConnection, OdbcCommande, .... voir le namespace System.Data.Odbc
Pour OleDb : OleDbConnection, OleDbCommande, ..... voir le namespace System.Data.OleDb
Pour SQL : SqlConnection, SqlCommande, .... voir le namespace System.Data.SqlClient
Pour Oracle : OracleConnection, OracleCommande, .... voir le namespace System.Data.OracleClient

Pour ce qui est du choix, grossièrement, on distingue 2 catégories de bases, les bases fichiers comme Access par exemple, et les bases Serveur qui ne sont accessible qu'à travers un serveur de base de données (SQLServer, MySQL, Oracle, D2Base, ....)
Généralement les bases fichiers sont utilisées comme petites bases locales soit en monoposte, soit en multiposte mais avec peu d'accès, peu d'utilisation simultanée, etc ....
Dès que l'on passe sur un nombre plus important de postes ou d'utilisateurs, ou lorsque on va avoir régulièrement un nombre d'accès simultanés non négligeable on préfrère passer sur des bases serveurs (SQLServer, MySQL, ..., Oracle pour des très grosses bases)
En gros, pour ta vidéothèque, Access ou  SQLExpress suffit largement.
Pour gérer toute la partie compta et financière d'un moyenne entreprise on prendra SQLServer, MySQL, .... Les boites plus importantes ou celle notamment qui ont des GPAO sont généralement sous Oracle.

A noter (je découvre) que apparement SqlServerExpress (je ne l'ai encore jamais utilisé) semble utiliser des bases SQLServer comme des bases fichiers

---- Sevyc64  (alias Casy) ---- <hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
141
Date d'inscription
mardi 18 mars 2003
Statut
Membre
Dernière intervention
3 octobre 2010

Je te remercie pour toutes ces informations, elles me seront précieuses.

Je vais me consacrer tout d'abord aux bases de données access

Je vais mettre en application tout ce que tu m'as dit.

Par contre si ça ne te dérange pas, au cas où je rencontrerais des problèmes

je me permettrai de t'écrire pour obtenir tes conseils qui pour l'instant me sont très précieux.

Encore un grand merci

PhilouVB