Powershell 连接MySQL

Powershell连接SQL Server一般都是直接使用Invoke-sqlcmd,这个很方便,但是有时候还是会需要连接到其他数据库,像MySQL。

这里是对Powershell连接MySQL研究的一个总结:

连接MySQL是通过.net框架的,所以必须先安装 MySQL .Net Connector (http://dev.mysql.com/downloads/connector/net/)

如果不想安装MySQL .Net connector 也可以直接在其他已安装的机器上拷贝MySql.Data.dll 到需要使用的机器上。

连接方式:

如果是安装了MySQL .Net Connector

[void][System.Reflection.Assembly]::LoadWithPartialName("MySql.Data")

如果是直接通过MySQL.Data.dll文件

$mySQLDataDLL = "C:\scripts\mysql\MySQL.Data.dll"
[void][system.reflection.Assembly]::LoadFrom($mySQLDataDLL)

读取DLL后我们便可以进行处理:

$connectionStr = "Server=192.168.1.1;Uid=user;Pwd=user123;database=mydb;"
$querysql = "select msg from messages limit 1;"

$connection = New-Object MySql.Data.MySqlClient.MySqlConnection
$connection.ConnectionString = $connectionStr
$connection.Open()
$command = New-Object MySql.Data.MySqlClient.MySqlCommand($querysql, $connection)
$dataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter($command)
$dataSet = New-Object System.Data.DataSet
$recordCount = $dataAdapter.Fill($dataSet)
$dataSet.Tables[0]

到这里我们会获得一个System.Data.DataSet对象,我们通过Tables[0]返回第0个表集,这已经可以返回我们需要的数据集了,但是如果我们要进一步的处理行集的话:

$table = $dataSet.Tables[0]
foreach($row in $table.Rows) {
    $row.msg
}

 

如果你想知道这个table中有多少列可以使用下面的方法:

$table.columns | Format-Table

 

 

 

posted on 2012-07-30 16:18  trams  阅读(5313)  评论(0编辑  收藏  举报