Base de donnée SQL sous VB 2005

Résolu
cs_PHILOUVB Messages postés 141 Date d'inscription mardi 18 mars 2003 Statut Membre Dernière intervention 3 octobre 2010 - 3 févr. 2008 à 15:22
cs_PHILOUVB Messages postés 141 Date d'inscription mardi 18 mars 2003 Statut Membre Dernière intervention 3 octobre 2010 - 5 févr. 2008 à 19:05
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

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
3 févr. 2008 à 16:26
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
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
3 févr. 2008 à 16:28
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
3
cs_PHILOUVB Messages postés 141 Date d'inscription mardi 18 mars 2003 Statut Membre Dernière intervention 3 octobre 2010
3 févr. 2008 à 18:55
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
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
3 févr. 2008 à 19:02
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
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_PHILOUVB Messages postés 141 Date d'inscription mardi 18 mars 2003 Statut Membre Dernière intervention 3 octobre 2010
4 févr. 2008 à 19:06
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.
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
4 févr. 2008 à 21:02
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
3
cs_PHILOUVB Messages postés 141 Date d'inscription mardi 18 mars 2003 Statut Membre Dernière intervention 3 octobre 2010
5 févr. 2008 à 19:05
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
0
Rejoignez-nous