IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Connexion à une base de données


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 94
    Par défaut Connexion à une base de données
    Bonjour,

    Une fois de plus j'ai besoin de vos lumières. Pouvez vous me dire si mon code de connexion à ma base de données est bon car à chaque fois j'ai une erreur parlant d'une impossibilité de se connecter à la base de données et je sais pas comment régler le problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Imports System.Diagnostics
    Imports System.IO
    Imports System.IO.IOException
    Imports System.Data
    Imports System.Data.OleDb
    Imports System.Data.SqlClient
    Imports Microsoft.VisualBasic
    Imports System.Data.Sql
     
    Class Page1
     
        Dim connexion As New SqlConnection
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Loaded
     
                    'Requete SQL pour insertion dans la base de données
                    Dim requeteP As SqlCommand = New SqlCommand("Insert into machineP [(nomp)(adresseipp)(macp)(bootp)] values (nomP,ipP,macP,bootP)", connexion)
                    Dim requeteA As SqlCommand = New SqlCommand("Insert into machineA [(noma)(adresseipa)(maca)(boota)] values (nomA,ipA,macA,bootA)", connexion)
                    Dim requeteR As SqlCommand = New SqlCommand("Insert into machineR [(nomr)(adresseipr)(macr)(bootr)] values (nomR,ipR,macR,bootR)", connexion)
                    'Connexion à la base de données. On vérifie que la connexion est bien établi pour pouvoir 
                    'insèrer les données obtenues dans le fichier configuration.txt
                    connexion.ConnectionString = "Data Source=C:\Documents and Settings\Michael\Mes documents\bddplg.sdf;Initial Catalog=base;Integrated Security=True"
                    connexion.Open()
                    If connexion.State = ConnectionState.Open Then
                        requeteP.ExecuteNonQuery()
                        requeteA.ExecuteNonQuery()
                        requeteR.ExecuteNonQuery()
                    End If
                Loop
                StreamRead.Close()
            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try
        End Sub
    je vous joint l'erreur qui est provoqué :
    Images attachées Images attachées  

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Ce que tu veux faire n'est pas clair.

    En effet, ton code parait être fait pour travailler avec une base Sql Server.

    A coté de cela, ta chaine de connexion fait référence à un fichier .SDF., c'est à dire une base Sql Server CE. (mais même pour ce cas, la chaine est fausse).

    Donc que veux tu faire ? Sql Server ou Sql Server CE ?

    Dans le premier cas, revoir la chaine de connexion (pour cela, un site incoutournable : www.connectionstrings.com - pour ma part, je suis incapable de retenir une syntaxe de connection string par coeur).

    Dans le deuxième cas, revoir le code (remplacer les SqlCommand par SqlCeCommand, SqlConnection par SqlceConnection, ou, beaucoup mieux, utiliser les interfaces non spécifique à un type de SGBD pout déclarer tes variables) ET rétablir la chaine de connexion correcte. (cf. le site que j'ai mentionné au paragraphe précédent).

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 94
    Par défaut
    J'ignorai qu'il existait un Sql Server CE. Peux tu si possible m'indiquer un cours expliquant les différences ou bien si tu les connais bien sûr si différence il y a. Etant donné que je suis avec une base .sdf je vais continuer avec le SQL Server CE

    Merci de ta réponse et je vous tiens au courant de mon avancement pour régler les problèmes de base de données.

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par Skice Voir le message
    J'ignorai qu'il existait un Sql Server CE.
    Justement ce n'est pas un serveur; c'est une base dite "in process", c'est à dire embarquée dans le processus de l'application (même si l'appellation Sql Server CE peut prêter à confusion).

    Peux tu si possible m'indiquer un cours expliquant les différences ou bien si tu les connais bien sûr si différence il y a. Etant donné que je suis avec une base .sdf je vais continuer avec le SQL Server CE
    Les différences sont très nombreuses car SQL CE est une version "light" pouvant être embarquée, par exemple, sur un téléphone mobile.

    Mais en gros :

    - pas de PS ni de Trigger
    - pas d'accès interbase (la connexion est liée à une et une seule base)

    Voici un tableau qui résume le tout :

    http://technet.microsoft.com/fr-fr/l...(SQL.110).aspx

  5. #5
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Dans le deuxième cas, revoir le code (remplacer les SqlCommand par SqlCeCommand, SqlConnection par SqlceConnection, ou, beaucoup mieux, utiliser les interfaces non spécifique à un type de SGBD pout déclarer tes variables) ET rétablir la chaine de connexion correcte. (cf. le site que j'ai mentionné au paragraphe précédent).
    A priori cela ne me concernera pas dans ma pratique quotidienne mais aurais-tu un court exemple pour expliciter cela ?

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 94
    Par défaut
    Merci pour ton coup de main bluedeep, j'ai réglé le plus gros de mes problèmes niveau sql. Il me reste des erreurs mais je préfère chercher par moi même avant de poster sur le forum.

  7. #7
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par griftou Voir le message
    A priori cela ne me concernera pas dans ma pratique quotidienne mais aurais-tu un court exemple pour expliciter cela ?
    Exemple en VB.Net, désolé mais ça j'ai pas (je tiens à conserver une peau lisse ).

    Mais le principe est simple : au lieu de garder des type de varaiable SqlCommand, SqlConnection, etc ... tu garde juste les réference aux interfaces : IDbConnection (implémentée par toutes les objets connection de ADO.Net et compatibles comme Npgsql, ODP), IDbCommand, etc ....

    ensuite il te suffit d'avoir une factory de connexion qui te fabrique l'objet connexion adapté. (il en existe une en standard d'ailleurs).

    Et pour les commandes, l'IDbConnection posséde une méthode factory d'objet implémentant IDbCommand : CreateCommand()

    A partir de cela, tu peux créer un code indépendant du type de base de données ("modulo" les syntaxes SQL spécifiques, bien sur).

  8. #8
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Ah bin c'est un peu ce que j'ai fait un ma dll en fait.

    J'ai fait (il y a plusieurs années déjà) une dll gère tout le code des inserts, update, delete pour moi. Elle fonctionne pour le moment uniquement pour access et sql server car je n'ai besoin que de ça.

    Mais je dois quand même lui dire quel type utilisé lors de l'utilisation. Sinon elle ne sait pas si c'est access ou sql server.

    Si j'ai bien compris, c'est ce genre de chose que tu décris non ?

  9. #9
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par griftou Voir le message
    Si j'ai bien compris, c'est ce genre de chose que tu décris non ?
    Oui, mais si tu utilises les factory intelligemment, tu peux piloter le tout depuis le fichier config, sans que à aucun moment la DLL doive manipuler une classe spécialisée sur un type de SGBD.

    Par exemple, le code suivant (en C#, désolé), permet de créer une connexion et lire une table sur n'importe quel type de base supportée par ado.net en renseignant les chaines "provider" et "chaine_de_connexion" (qui viennent dans ce cas du fichier de config).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
                DbProviderFactory providerFactory = System.Data.Common.DbProviderFactories.GetFactory("provider");
                using (IDbConnection connection = providerFactory.CreateConnection())
                {
                    connection.ConnectionString = "chaine_de_connexion";
                    connection.Open();
                    using (IDbCommand command = connection.CreateCommand())
                    {
                        command.CommandType = CommandType.Text;
                        command.CommandText = "select X from Table";
                        using (IDataReader reader = command.ExecuteReader())
                        {
                            while (reader.Read())
                            {
                            // traitement des données.
                            }
                            reader.Close();
                        }
                    }
                    connection.Close();
                }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pool de connexion à une base de données en java
    Par ppaul127 dans le forum JDBC
    Réponses: 3
    Dernier message: 15/12/2005, 17h03
  2. Réponses: 1
    Dernier message: 25/09/2005, 16h18
  3. ERREUR DE CONNEXION à une base de donnée ACCESS protégée
    Par unionriton dans le forum Bases de données
    Réponses: 4
    Dernier message: 09/05/2005, 09h35
  4. Delphi Connexion à une base de donnée distante par TCP/IP
    Par viecel dans le forum Bases de données
    Réponses: 1
    Dernier message: 12/01/2005, 19h19
  5. Réponses: 3
    Dernier message: 29/03/2004, 18h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo