Partage
  • Partager sur Facebook
  • Partager sur Twitter

[powershell] premier pas en connexion mysql

    13 août 2022 à 16:06:50

    Bonjour,

    J'apprends comment connecter powershell a mysql. Voici le code je j'ai piqué et ajusté pour tenter de comprendre, mais il me jette au tout premier IF, peut être même dès la premiere ligne j'ai l'impression qu'il n'aime pas

    PS : autre chose qui doit jouer je vois que sur l'icone wamp en bas a droite de windows, il est écrit serveur hors ligne et je ne sais pas comment changer ça.

    $mysqlnet=[Reflection.Assembly]::Assembly.Load("MySql.Data") 

    :

    $mysqlnet=[Reflection.Assembly]::Assembly.Load("MySql.Data")
    
    if(-not $mysqlnet)
    {
        Write-Error "Ouhlala, problème !"
        Exit
    }
    
    # Paramètres de connexion à la base MySQL
    $dbuser = "root" # le nom d'utilisateur (root)
    $dbpwd = "motdepasse" # son mot de passe (cet exemple est très mauvais)
    $dbname = "annuaire" # nom de la base de données database
    $dbhost = "localhost" # nom d'hôte ou adresse IP du serveur
    $dbport = 3306 # port TCP MySQL (3306 par défaut)
    
    $ConnectionString = "server=$dbhost;port=$dbport;uid=$dbuser;pwd=$dbpwd;database=$dbname" # chaîne de connexion à la base MySQL
    $conn = New-Object MySql.Data.MySqlClient.MySqlConnection($connectionString) 
    $conn.Open()
    
    $query="SELECT * FROM ``table``;"
    
    $MysqlCmd = New-Object MySql.Data.MySqlClient.MySqlCommand($query, $conn)    # Créer la commande SQL
    $DataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter($MysqlCmd) # Créer l'adaptateur depuis la commande
    $DataSet = New-Object System.Data.DataSet                                    # Créer le jeu de données
    $dataAdapter.Fill($dataSet, "data")                                          # Remplir le jeu de données $dataset et le mettre dans un tableau nommé "data"            
    
    $res=$dataSet.Tables["data"] 
    
    foreach($gugusse in $res)
    {
        Write-Host "$($gugusse.nom) $($gugusse.prenom) !"
    }
    
    $query="INSERT INTO ``table`` VALUES ('LATIR', 'Doudou')"
    $MysqlCmd = New-Object MySql.Data.MySqlClient.MySqlCommand($query, $conn) # Créer la commande SQL
    $MysqlCmd.CommandText = $query  # On met la requête dans la propriété CommandText de la commande
    $RowsInserted = $MysqlCmd.ExecuteNonQuery() # On exécute la commande
    
    if ($RowsInserted) 
    { 
        Write-Host "Nombre d'enregistrement ajoutés : $RowsInserted"
        Write-Host "Dernier ID ajouté : $($MysqlCmd.LastInsertedId)"
    } 
    else 
    { 
        Write-Error "Ouhlalalala quelque chose a foiré !"
    } 
    $MysqlCmd.Dispose() # On supprime la commande quand on n'en a plus besoin, pas avant !
    
    $query="UPDATE 'annuaire' SET prenom='jean' WHERE nom='perez'"
    $MysqlCmd = New-Object MySql.Data.MySqlClient.MySqlCommand($query, $conn) # Créer la commande SQL
    $MysqlCmd.CommandText = $query  # On met la requête dans la propriété CommandText de la commande
    $RowsInserted = $MysqlCmd.ExecuteNonQuery() # On exécute la commande
    
    $MysqlCmd.Dispose() # On supprime la commande quand on n'en a plus besoin, pas avant !
    
    $conn.Close() # On ferme la connexion


    le message d'erreur :

    PS C:\WINDOWS\system32> C:\Nouveau dossier\annuaireBDD.ps1
    Impossible d’appeler une méthode dans une expression Null.
    Au caractère C:\Nouveau dossier\annuaireBDD.ps1:1 : 1
    + $mysqlnet=[Reflection.Assembly]::Assembly.Load("MySql.Data")
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidOperation : (:) [], RuntimeException
        + FullyQualifiedErrorId : InvokeMethodOnNull
     
    C:\Nouveau dossier\annuaireBDD.ps1 : Ouhlala, problème !
        + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
        + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,annuaireBDD.ps1



    mais peut être que c'est au niveau de la base de donnée que j'ai créé avec wamp, une table, 2 champs :

    -
    Edité par Deuvool 13 août 2022 à 16:12:50

    • Partager sur Facebook
    • Partager sur Twitter
      17 août 2022 à 2:26:00

      Salut le fougueux* !

      Tu vas un peu trop *vite. Je connais pas PS, mais, ton Assembly je sais pas quoi il réclame un fichier .dll (en somme, c'est une sorte de bibliothèque qui contient des fichiers utiles). Donc, c'est pour ça que tu bloques dès la première ligne. Le .dll en question c'est simplement la bibliothèque MySQL que tu as dû télécharger et qui contient la méthode de connexion à une BDD MySQL depuis PS.

      https://www.cdata.com/kb/tech/mysql-ado-powershell.rst

      https://www.techtrek.io/connecting-powershell-to-mysql-database/

      • Partager sur Facebook
      • Partager sur Twitter
        19 août 2022 à 16:52:45

        c'est bon j'y suis arrivé !

        j'ai fini par dl le msqlconnector et j'ai fait pointer sur un bon mysql.data. Ensuite plusieurs erreur d'appel de table , mais c'est tout bon voici le script pour ceux qui veulent un qui fonctionne, biensur créer une BDD similaire. Pour le wamp pas connecter, je sais pas , j'ai rallumé mon pc le lendemain et tout fonctionnait.

        attention au `` (altGR+è) , qui semble nécessaire.

         clear-host
         #il faut installer MySQL .NET Connector pour faire fonctionner la connexion mysql
         
         [void][system.reflection.Assembly]::LoadFrom("C:\Program Files (x86)\MySQL\MySQL Connector Net 8.0.30\Assemblies\v4.5.2\MySql.Data.dll")
        
        # Paramètres de connexion à la base MySQL
        $dbuser = "root" # le nom d'utilisateur (root)
        $dbpwd = "lemotdepasse" # son mot de passe (cet exemple est très mauvais)
        $dbname = "bddtest" # nom de la base de données database
        $dbhost = "localhost" # nom d'hôte ou adresse IP du serveur
        $dbport = 3306 # port TCP MySQL (3306 par défaut)
        
        $ConnectionString = "server=$dbhost;port=$dbport;uid=$dbuser;pwd=$dbpwd;database=$dbname" # chaîne de connexion à la base MySQL
        $conn = New-Object MySql.Data.MySqlClient.MySqlConnection($connectionString) 
        $conn.Open()
        
        $query="SELECT * FROM ``annuaire``;"
        
        $MysqlCmd = New-Object MySql.Data.MySqlClient.MySqlCommand($query, $conn)    # Créer la commande SQL
        $DataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter($MysqlCmd) # Créer l'adaptateur depuis la commande
        $DataSet = New-Object System.Data.DataSet                                    # Créer le jeu de données
        $dataAdapter.Fill($dataSet, "data")                                          # Remplir le jeu de données $dataset et le mettre dans un tableau nommé "data"            
        
        $res=$dataSet.Tables["data"] 
        
        foreach($gugusse in $res)
        {
            Write-Host "$($gugusse.AGENTS_nom) $($gugusse.AGENTS_prenom) !"
        }
        
        $query="INSERT INTO ``annuaire`` VALUES (DEFAULT,'LATIR', 'Doudou')"
        $MysqlCmd = New-Object MySql.Data.MySqlClient.MySqlCommand($query, $conn) # Créer la commande SQL
        $MysqlCmd.CommandText = $query  # On met la requête dans la propriété CommandText de la commande
        $RowsInserted = $MysqlCmd.ExecuteNonQuery() # On exécute la commande
        
        if ($RowsInserted) 
        { 
            Write-Host "Nombre d'enregistrement ajoutés : $RowsInserted"
            Write-Host "Dernier ID ajouté : $($MysqlCmd.LastInsertedId)"
        } 
        else 
        { 
            Write-Error "Ouhlalalala quelque chose a foiré !"
        } 
        $MysqlCmd.Dispose() # On supprime la commande quand on n'en a plus besoin, pas avant !
        
        $query="UPDATE ``annuaire`` SET AGENTS_prenom='julien' WHERE AGENTS_nom='perez'"
        $MysqlCmd = New-Object MySql.Data.MySqlClient.MySqlCommand($query, $conn) # Créer la commande SQL
        $MysqlCmd.CommandText = $query  # On met la requête dans la propriété CommandText de la commande
        $RowsInserted = $MysqlCmd.ExecuteNonQuery() # On exécute la commande
        
        $MysqlCmd.Dispose() # On supprime la commande quand on n'en a plus besoin, pas avant !
        
        $conn.Close() # On ferme la connexion



        • Partager sur Facebook
        • Partager sur Twitter
          30 août 2022 à 19:46:51

          pour le wamp, il gère plusieurs serveurs selon ce que tu as installé (apache, tomcat, mysql/mariabd,..) en cliquant dessus ça doit lancer une interface qui te permet de lancer ou arrêter individuellement ces serveurs.

          ce qui me parait bizarre ce sont les doubles ` (une seule paire en début/fin du nom de table devrait suffire, si nécessaire)

          • Partager sur Facebook
          • Partager sur Twitter

          [powershell] premier pas en connexion mysql

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown