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 :

Transfert de donnée entre différentes base


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de tonymx15
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Juin 2010
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Juin 2010
    Messages : 140
    Par défaut Transfert de donnée entre différentes base
    Bonjour,

    Je reviens avec un nouveau problème, j'arrive à me connecter à deux base de donnée via ODBC sur un programme que je développe en VB 10 sous Visual Studio, mais je voudrais savoir comment récupérer les donnée de ma base SQL et les transférer dans ma base MySql...

    J'ai commencé mais je vois pas du tout comment procéder sachant que la connexion aux deux base de donnée marche !

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    'Connexion à la base de donnée titouweb (SQL)
            Dim conn1 As New Odbc.OdbcConnection("DSN=titouweb")
            Dim lesRequeteTitouweb As String
            Dim commandeTitouweb As Odbc.OdbcCommand
            Dim dataAdapterTitouweb As Odbc.OdbcDataAdapter
            Dim dataSetTitouweb As New System.Data.DataSet
            Dim dataTableTitouweb As System.Data.DataTable
     
            conn1.Open()
     
            lesRequeteTitouweb = ""
     
            commandeTitouweb = New Odbc.OdbcCommand(lesRequeteTitouweb, conn1)
            dataAdapterTitouweb = New Odbc.OdbcDataAdapter(commandeTitouweb)
            commandeTitouweb.Connection = conn1
            dataAdapterTitouweb.Fill(dataSetTitouweb, "ASSMAT")
            dataTableTitouweb = dataSetTitouweb.Tables("ASSMAT")
     
     
     
     
     
            'Connexion à la base de donnée Géo-localisation php (MyQql)
            Dim conn2 As New Odbc.OdbcConnection("DSN=Daphne")
            Dim lesRequeteDaphne As String
            Dim commandeDaphne As Odbc.OdbcCommand
            Dim dataAdapterDaphne As Odbc.OdbcDataAdapter
            Dim dataSetDaphne As New System.Data.DataSet
            Dim dataTableDaphne As System.Data.DataTable
            Try
                conn2.Open()
                MessageBox.Show("Connexion réussie (AssMat) !")
     
                lesRequeteDaphne = "INSERT INTO date (date) VALUES ('kjlkjls')" 'ça sa marche
                commandeDaphne = New Odbc.OdbcCommand(lesRequeteDaphne, conn2)
                dataAdapterDaphne = New Odbc.OdbcDataAdapter(commandeDaphne)
                commandeDaphne.Connection = conn2
                dataAdapterDaphne.Fill(dataSetDaphne, "date")
                dataTableDaphne = dataSetDaphne.Tables("date")
     
            Catch ex As Exception
                MessageBox.Show("Impossible de se connecter (AssMat) !" & Chr(10) & Err.Description)
            Finally
                conn2.Close()
            End Try

  2. #2
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Alors petit Rappel:

    L'utilisation du dataadapter et du dataset sont très bien pour aller chercher des données...

    Mais la tu le fais deux fois....

    Que tu fasse Fill() la premiere fois pour rappatrié des données, logique, que tu fasses Fill() la deuxième fois, ca n'a pas de sens (Fill= remplir en anglais, et en l'occurence, remplis mon dataset)

    Ensuite précise un peu... tu veux copié des enregistrement d'une table a une table identique, copié la structure de bases de données (créer les bdd, les tables les colonnes), Tu veux faire cette opération qu'une fois ? c'est un traitement genre backup ?

  3. #3
    Membre confirmé Avatar de tonymx15
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Juin 2010
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Juin 2010
    Messages : 140
    Par défaut
    Citation Envoyé par mactwist69 Voir le message
    Alors petit Rappel:

    L'utilisation du dataadapter et du dataset sont très bien pour aller chercher des données...

    Mais la tu le fais deux fois....

    Que tu fasse Fill() la premiere fois pour rappatrié des données, logique, que tu fasses Fill() la deuxième fois, ca n'a pas de sens (Fill= remplir en anglais, et en l'occurence, remplis mon dataset)

    Ensuite précise un peu... tu veux copié des enregistrement d'une table a une table identique, copié la structure de bases de données (créer les bdd, les tables les colonnes), Tu veux faire cette opération qu'une fois ? c'est un traitement genre backup ?
    C'est vraie que j'utilise deux fois le Fill() et le dataAdapter...

    Alors en faites les deux bases de données sont structurées différemment, et c'est pour faire une action quotidienne, chaque jour mon programme devra copier/coller des données d'une base de donnée à une autre. Par la suite je mettrais en place un "service" en .dll pour automatiser le copier/coller.

    Il faut copier/coller les tables, "agr", "ville", "assmat" de la base de donnée titouweb (SQL) vers les tables "agrement", "ville", assmat" de la base de donnée assmat (MySql).

    Si tu as besoins d'informations supplémentaires dis moi je te donnerais tous ce dont il te faut.

    Message édité :

    J'ai repris mon code, j'ai réussis à :
    - Récupérer les lignes de la table 1 de la première base dans un "DataTable".
    - Stocker dans une variable le nombre de ligne du "Datatable" précèdent.
    - Me connecter à la deuxième base de donnée.

    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
     
            'Connexion à la base de donnée des assistants géo-localisés
            Dim conn3 As New Odbc.OdbcConnection("DSN=AssmatGeo")
            Dim lesRequeteAssmatGeo As String
            Dim commandeAssmatGeo As Odbc.OdbcCommand
            Dim dataAdapterAssmatGeo As Odbc.OdbcDataAdapter
            Dim dataSetAssmatGeo As New System.Data.DataSet
            Dim dataTableAssmatGeo As System.Data.DataTable
            conn3.Open()
            lesRequeteAssmatGeo = "SELECT * FROM ASSMAT"
            commandeAssmatGeo = New Odbc.OdbcCommand(lesRequeteAssmatGeo, conn3)
            dataAdapterAssmatGeo = New Odbc.OdbcDataAdapter(commandeAssmatGeo)
            commandeAssmatGeo.Connection = conn3
            dataAdapterAssmatGeo.Fill(dataSetAssmatGeo, "ASSMAT")
            dataTableAssmatGeo = dataSetAssmatGeo.Tables("ASSMAT")
     
            'on conte le nombre de ligne dans les ASSMAT géo-localisés
            Dim nbLigne As Integer = dataTableAssmatGeo.Rows.Count
     
            'Connexion à la base de donnée Géo-localisation php (MyQql)
            Dim conn2 As New Odbc.OdbcConnection("DSN=Daphne")
            Dim lesRequeteDaphne As String
            Dim commandeDaphne As Odbc.OdbcCommand
            Dim dataAdapterDaphne As Odbc.OdbcDataAdapter
            Dim dataSetDaphne As New System.Data.DataSet
            conn2.Open()
            lesRequeteDaphne = "INSERT INTO date (date) VALUES ('dskds')"
            commandeDaphne = New Odbc.OdbcCommand(lesRequeteDaphne, conn2)
            dataAdapterDaphne = New Odbc.OdbcDataAdapter(commandeDaphne)
            commandeDaphne.Connection = conn2
            dataAdapterDaphne.Fill(dataSetDaphne, "date")
    Il me manque plus qu'à ajouter le "DataTable" dans la deuxième BDD et là je bloque...

  4. #4
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Alors déjà ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dataAdapterAssmatGeo.Fill(dataSetAssmatGeo, "ASSMAT")
    dataTableAssmatGeo = dataSetAssmatGeo.Tables("ASSMAT")
    La deuxième ligne est "facultative" voir redondante. Un dataset est composé de n datatable, d'ailleurs tu accèdes a ta datatable en faisant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dataSetAssmatGeo.Tables("ASSMAT")
    Ensuite, plusieurs solution. Je te donne un exemple après tu adaptes, ou tu me dis si tu comprends pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim connexion As New Odbc.OdbcConnection("DSN=Daphne")
            Dim commandeDaphne As New Odbc.OdbcCommand
            commandeDaphne.Connection = connexion
            connexion.Open()
     
            For i As Integer = 0 To dataSetTitouweb.Tables("ASSMAT").Rows.Count
     
                commandeDaphne.CommandText = "INSERT INTO mabdd.matable (nom, prenom, age) VALUES (" & dataSetTitouweb.Tables("ASSMAT").Rows(i).Item("Nom") & "," & dataSetTitouweb.Tables("ASSMAT").Rows(i).Item("Prenom") & "," & dataSetTitouweb.Tables("ASSMAT").Rows(i).Item("Age") & ")"
                commandeDaphne.ExecuteNonQuery()
     
            Next
     
     
            connexion.Close()

  5. #5
    Membre confirmé Avatar de tonymx15
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Juin 2010
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Juin 2010
    Messages : 140
    Par défaut
    Ok merci ça marche !

  6. #6
    Membre confirmé Avatar de tonymx15
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Juin 2010
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Juin 2010
    Messages : 140
    Par défaut
    J'avais oublié, ça trouve une erreur :

    ERROR [42000] [MySQL][ODBC 3.51 Driver][mysqld-3.23.58-log]You have an error in your SQL syntax near 'HERVILLY','Carole','','','215','0669710345','','')' at line 1
    Ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    lesRequeteDaphne = " INSERT INTO assmat (vid_assmat, sexe_assmat, nom_assmat, prenom_assmat, adresse_assmat, adresse2_assmat, ville_assmat, num_assmat, lat_assmat, lng_assmat ) VALUES ('" & dataTableAssmatGeo.Rows.Item(x).Item(0).ToString & "','" & dataTableAssmatGeo.Rows.Item(x).Item(1).ToString & "','" & dataTableAssmatGeo.Rows.Item(x).Item(2).ToString & "','" & dataTableAssmatGeo.Rows.Item(x).Item(3).ToString & "','" & dataTableAssmatGeo.Rows.Item(x).Item(38).ToString & "','" & dataTableAssmatGeo.Rows.Item(x).Item(39).ToString & "','" & dataTableAssmatGeo.Rows.Item(x).Item(9).ToString & "','" & dataTableAssmatGeo.Rows.Item(x).Item(14).ToString & "','" & dataTableAssmatGeo.Rows.Item(x).Item(43).ToString & "','" & dataTableAssmatGeo.Rows.Item(x).Item(42).ToString & "')"
    Le résultat de la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     INSERT INTO assmat (vid_assmat, sexe_assmat, nom_assmat, prenom_assmat, adresse_assmat, adresse2_assmat, ville_assmat, num_assmat, lat_assmat, lng_assmat ) VALUES ('11112','Mme','D'HERVILLY','Carole','','','215','0669710345','','')

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

Discussions similaires

  1. Transfert de données entre 2 bases différentes
    Par offnight dans le forum Outils
    Réponses: 2
    Dernier message: 13/02/2012, 13h47
  2. Transfert de données entre différents formulaires
    Par sbocquet dans le forum InfoPath
    Réponses: 1
    Dernier message: 16/04/2008, 15h04
  3. Transfert de données entre deux bases
    Par RTDanjou dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 09/03/2007, 15h53
  4. Transfert de données entre 2 bases Access
    Par care dans le forum Bases de données
    Réponses: 10
    Dernier message: 13/02/2007, 14h33
  5. Réponses: 5
    Dernier message: 30/11/2005, 16h41

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