0 Überblick

Neben den Standarddatenbanken in der Windowswelt "Microsoft SQLServer" und "Oracle Datenbank" sollte man auch MySQL, als das laut Wikipedia "eines der weltweit am weitesten verbreiteten relationalen Datenbankverwaltungssysteme"  schauen.

Je nach Version ist dieses Produkt kostenfrei hier zu beziehen: 
http://dev.mysql.com: MySQL Community Edition

Um mit der Powershell auf eine MySQL-Datenbank zugreifen zu können, benötigt man nur einen passenden Provider, den man sich hier zum Download bereitliegt: 
http://dev.mysql.com: Begin Your Download - mysql-connector-net-6.8.3.msi

Eine sehr einfache Möglichkeit eine MySQL-Datenbank auf einem Windowsrechner zu installieren, bei Bedarf zusammen mit PHP, Perl, Mercury oder Tomcat, bieten die sogenannten Apache–MySQL–PHP Pakete, wovon das Paket Xampp hier bereitliegt:
http://www.apachefriends.org: XAMPP 

Es sei aber ausdrücklich darauf hingewiesen, das XAMPP ein Entwicklungspaket für eine Testumgebung ist. Für einen produktiven Server im Internet ist dieses Paket zu wenig gesichert!

Das XAMPP-Paket bringt eine kleine Beispieldatenbank für eine CD-Verwaltung mit, an der ich auch einige Beispiele durchführen werde.

 

1 die Beispieldatenbank

Öffnet man in der phpMyAdmin die Datenbank cdcol, so zeigt ein Klick auf das Blattsymbol (lila Pfeil) die Struktur der Tabelle. Ein Klick auf den Namen der Tabelle (oranger Pfeil) zeigt dagegen die Datensätze, sowie das SQL-Statement an

 

 

2 Zugriff mit Powershell auf cdcol

Nachdem Xampp und der mysql-Connector installiert sind, kann man eine Query starten

Beispiel 1: Auslesen von Daten aus einer MySQL-Datenbank

Set-StrictMode -Version "2.0"
Clear-Host

$MySQlServerName = "localhost"
$MySQLDatenbankName = "cdcol"
$TabellenName = "cds"
$UserName = "root"
$Password = "Passwort123"

## Laden des MySQL Provider nachladen / Pfad evtl. anpassen
[void][system.reflection.Assembly]::LoadFrom("C:\Program Files (x86)\MySQL\MySQL Connector Net 6.8.3\Assemblies\v2.0\MySql.Data.dll")

$MySqlConnection = New-Object MySql.Data.MySqlClient.MySqlConnection
$MySqlConnection.ConnectionString = "server=$MySQLServerName;user id=$Username;password=$Password;database=$MySQLDatenbankName;pooling=false"
$MySqlConnection.Open()

$MySqlCommand = New-Object MySql.Data.MySqlClient.MySqlCommand
$MySqlCommand.Connection = $MySqlConnection

$MySqlCommand.CommandText = "SELECT * FROM $TabellenName"
$Reader = $MySqlCommand.ExecuteReader()
While($Reader.Read()) {
 "{0} {1} {2}" -f $Reader.GetValue(0),$Reader.GetValue(1),$Reader.GetValue(2)
}
 
$Reader.Close()

$MySqlConnection.Close()
#Ausgabe

Beauty Ryuichi Sakamoto 1990
Goodbye Country (Hello Nightclub) Groove Armada 2001
Glee Bran Van 3000 1997

 

Beispiel 2: Einfügen von Daten

Set-StrictMode -Version "2.0"
Clear-Host

$MySQlServerName = "localhost"
$MySQLDatenbankName = "cdcol"
$TabellenName = "cds"
$UserName = "root"
$Password = "Stein123"

## Laden des MySQL Provider nachladen / Pfad evtl. anpassen
[void][system.reflection.Assembly]::LoadFrom("C:\Program Files (x86)\MySQL\MySQL Connector Net 6.8.3\Assemblies\v2.0\MySql.Data.dll")

$MySqlConnection = New-Object MySql.Data.MySqlClient.MySqlConnection
$MySqlConnection.ConnectionString = "server=$MySQLServerName;user id=$Username;password=$Password;database=$MySQLDatenbankName;pooling=false"
$MySqlConnection.Open()

$MySqlCommand = New-Object MySql.Data.MySqlClient.MySqlCommand
$MySqlCommand.Connection = $MySqlConnection

$MySqlCommand.CommandText = "INSERT INTO $TabellenName VALUES ('die kleine Kneipe','Peter Alexander',1960,25)"
$MySqlCommand.ExecuteNonQuery() | Out-Null
$lastId = $MySqlCommand.get_LastInsertedId()

$MySqlCommand.CommandText = "INSERT INTO $TabellenName VALUES ('Sabbath Bloody Sabbath','Black Sabbath',2010,$lastId+1)"
$MySqlCommand.ExecuteNonQuery() | Out-Null
$lastId = $MySqlCommand.get_LastInsertedId()

$MySqlConnection.Close()