cs_PHILOUVB
Messages postés141Date d'inscriptionmardi 18 mars 2003StatutMembreDernière intervention 3 octobre 2010
-
3 févr. 2008 à 15:22
cs_PHILOUVB
Messages postés141Date d'inscriptionmardi 18 mars 2003StatutMembreDerniè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 ?
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 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
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 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.
cs_PHILOUVB
Messages postés141Date d'inscriptionmardi 18 mars 2003StatutMembreDerniè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.
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 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