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 :

Base Acces vers MySQL


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 25
    Points : 20
    Points
    20
    Par défaut Base Acces vers MySQL
    bonjour j'essaye de copie une base acces dans une base mysql
    j'arrive a copie la base acces dans une dataset

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            Datatable_Test.Clear()
            ConnectionAcces.ConnectionString = connStringAccess
            ConnectionAcces.Open()
     
            'copie host silo 1 et 2
            CommandAcces.CommandText = " SELECT silo1.IMMAT, silo1.CDPROV FROM silo1;"
            CommandAcces.Connection = ConnectionAcces
            AdapterAcces.SelectCommand = CommandAcces
            AdapterAcces.Fill(Datatset_Test, "table_h")
            ConnectionAcces.Close()
    mais je n'arrive pas a copie cette dataset dans ma base mysql

    j'ai essaye ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            ConnectionMySql.ConnectionString = connStringSql
            ConnectionMySql.Open()
     
            CommandMySql.CommandText = "INSERT INTO `site_web`.`host` (`IMMAT`, `CDPROV`) select  Datatset_Test.Tables(`table_h`)(`IMMAT`, `CDPROV`) from ;"
            CommandMySql.Connection = ConnectionMySql
            AdapterMySql.SelectCommand = CommandMySql
            AdapterMySql.Fill(Datatset_Test, "table_h")
            ConnectionMySql.Close()
    mais je n'arrive pas a trouver la bonne CommandText

  2. #2
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    pourquoi ne pas utiliser un DataReader pour récupérer tes tuples sur Access, et au fur et à mesure de leur lecture tu fais une requête paramétrée pour les insérer "à la volée" côté MySQL ?
    Quoi qu'il en soit, dans le code que tu nous montres j'ai de sérieux doutes sur le fait que l'engine MySQL sache quoi faire de "Datatset_Test.Tables" ...
    Plus je connais de langages, plus j'aime le C.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    vous avez raison l'engine MySQL ne sais pas quoi faire de "Datatset_Test.Tables" , j'ai déjà crée une boucle qui enregistre les données une par une(et qui fonctionne). Mais j'aimerais pouvoir copier ma Dataset directement dans ma base mysql .


    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
          Dim DBCount As Double = 0
            Dim StVAr_1, StVar_2 As String
            Dim ds As DataSet = New DataSet
     
     
            ConnectionAcces.ConnectionString = connStringAccess
            ConnectionAcces.Open()
            CommandAcces.CommandText = " SELECT silo1.IMMAT, silo1.CDPROV FROM silo1;"
            CommandAcces.Connection = ConnectionAcces
            AdapterAcces.SelectCommand = CommandAcces
            AdapterAcces.Fill(MonDataSetEnLocal, "HOST_TEMPO")
            ConnectionAcces.Close()
     
            ConnectionMySql.ConnectionString = connStringSql
            ConnectionMySql.Open()
     
            Do While DBCount <> MonDataSetEnLocal.Tables("HOST_TEMPO").Rows.Count
                StVAr_1 = MonDataSetEnLocal.Tables("HOST_TEMPO")(DBCount)(0).ToString()
                StVar_2 = MonDataSetEnLocal.Tables("HOST_TEMPO")(DBCount)(1).ToString()
                CommandMySql.CommandText = "INSERT INTO `site_web`.`host` (`IMMAT`, `CDPROV`) values ('" & StVAr_1 & "','" & StVar_2 & "');"
                CommandMySql.Connection = ConnectionMySql
                AdapterMySql.SelectCommand = CommandMySql
                AdapterMySql.Fill(ds)
                DBCount = DBCount + 1
     
            Loop
            ConnectionMySql.Close()

  4. #4
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    J'ai aucune méthode en tête qui permettrait de sauver un DataSet "en direct", désolé.
    Plus je connais de langages, plus j'aime le C.

  5. #5
    Membre émérite 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 : 39
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Si tu utilises un DataAdaptater qui Databind une datatable2 à une table MySQL, alors tu copieras les lignes de ta datatable1 (du select) à la datatable2, puis te feras un Update() sur la datadaptater, il s'occupera de mettre à jour la table MySQL.
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    bonjour mactwist69 (désoler du retard pour répondre ), voila ce que j'ai essaye de faire mais j'arrive pas ( si vous avais un exemple je suis preneur )
    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
     
            Imports MySql.Data.MySqlClient 'import le connector Mysql
            Imports System.Data.OleDb
     
            ' connection mysql
            Dim ConnectionMySql As MySqlConnection = New MySqlConnection
            Dim AdapterMySql As New MySqlDataAdapter
            Dim CommandMySql As New MySqlCommand
            Dim connStringSql As String = "Server=127.0.0.1;Database=testcopie;Uid=root;Pwd=;"
     
            ' connection base acces
            Dim ConnectionAcces As OleDbConnection = New OleDbConnection
            Dim AdapterAcces As New OleDbDataAdapter()
            Dim CommandAcces As New OleDbCommand
            Dim connStringAccess As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\baseTest.mdb;Persist Security Info=False"
     
            Dim DaTest1 As New DataTable ' creation d'une base tempo Datest 1
            Dim datest2 As New DataTable ' creation d'une base tempo Datest 2
     
            'creation connection a la base acces et copie vers datest1
            ConnectionAcces.ConnectionString = connStringAccess
            ConnectionAcces.Open()
            CommandAcces.CommandText = "SELECT test_1.* FROM test_1;"
            CommandAcces.Connection = ConnectionAcces
            AdapterAcces.SelectCommand = CommandAcces
            AdapterAcces.Fill(DaTest1) ' copie la table test_1 dans la datatable Datest1
     
            'creation connection a la base mysql 
            ConnectionMySql.ConnectionString = connStringSql
            ConnectionMySql.Open()
     
            CommandMySql.CommandText = "SELECT datest1.* FROM datest1;"
            CommandMySql.Connection = ConnectionMySql
            AdapterMySql.SelectCommand = CommandMySql
            AdapterMySql.Update(datest2)
     
            ConnectionAcces.Close()
            ConnectionMySql.Close()
    et la je me retrouve avec l'erreur Table 'testcopie.datest1' doesn't exist
    il doit bien existe un moyen de copie sans Etre obliger de faire ligne par ligne

  7. #7
    Membre émérite 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 : 39
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Tout à fait mais tu es aller un peu vite tout de même, je vois 25 points qui ne vont pas :

    1) Déjà si ta requête MySQL ne fonctionne pas, c'est que ta table n'existe MySQL n'existe pas ???
    Tu veux aussi créer la table à la volée ? (si c'est le cas il faut le prévoir dans le code)

    2) Ensuite, avant de mettre a jour Dataset2 vers MySQL... Il faut bien copier les lignes entre le dataset1 et le dataset2...
    Pour ça tu as la fonction copy() de datatable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim dataTable2 = dataTable1.Copy()

    Ensuite seulement tu pourras faire le update
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    ok , je ne veux pas créer la table à la volée ,elle existe déjà .
    la base access : baseTest - table : test_1 / la base Mysql : testcopie - table : test_2

    pour la fonction copy c'est bon je viens de comprendre mon erreur

    par contre pour crée un update je ne vois pas comment ( a chaque fois que je lance mon code il ne rempli pas la base)

    j 'ai test ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            Dim DaTest2 = DaTest1.Copy()
            CommandMySql.CommandText = "SELECT * FROM testcopie.test_2;"
            CommandMySql.Connection = ConnectionMySql
            AdapterMySql.SelectCommand = CommandMySql
            AdapterMySql.Update(DaTest2)
    je ne vois pas le lien entre la table Mysql test_2 et la datest2

  9. #9
    Membre émérite 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 : 39
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Autre point : Ne pas trop utiliser le *, il vaut mieux mettre les noms de colonnes.

    Ensuite, tu n'as pas écris la requête du update....

    https://msdn.microsoft.com/fr-fr/lib...v=vs.110).aspx
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

Discussions similaires

  1. Migration de base oracle vers mysql avec Perl
    Par kasnej dans le forum SGBD
    Réponses: 0
    Dernier message: 01/11/2007, 13h24
  2. [Logiciel de syncro]-Acces vers MySql
    Par medos dans le forum Access
    Réponses: 2
    Dernier message: 13/09/2006, 02h55
  3. base access vers mysql
    Par chiarde dans le forum Débuter
    Réponses: 1
    Dernier message: 14/03/2006, 12h59
  4. base access vers mysql
    Par chiarde dans le forum Access
    Réponses: 2
    Dernier message: 08/03/2006, 17h09
  5. Export base Access vers MySql
    Par jjn1er dans le forum Outils
    Réponses: 7
    Dernier message: 10/03/2003, 23h50

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