Temp: Difference between revisions
Jump to navigation
Jump to search
(xf) |
(cds) |
||
Line 1: | Line 1: | ||
<# | <# ======================================================================================================================================== | ||
MySQL function library | |||
========================================================================================================================================= | |||
Simon Strutt Jan 2011 | |||
========================================================================================================================================= | |||
Requires MySQL .NET connector to be installed on machine script is run from (tested with ver 6.2.4) | |||
Requires Standard.ps1 (for Log func) | |||
Version | Version 1 | ||
- Initial creation | |||
Version 2 | |||
- Added $SQLnoExit option | |||
Version 3 | |||
- Renamed $LogNonQueries to $LogMySQLNonQueries | |||
- Added $LogMySQLQueries | |||
Version 4 | |||
- Renamed funcs to more PowerShell standard | |||
#> | |||
## | function Connect-MySQL([string]$user, [string]$pass, [string]$MySQLHost, [string]$database) { | ||
# Load MySQL .NET Connector Objects | |||
$ | [void][system.reflection.Assembly]::LoadWithPartialName("MySql.Data") | ||
$ | |||
$ | # Open Connection | ||
$ | $connStr = "server=$MySQLHost;port=3306;uid=$user;pwd=$pass;database=$database;Pooling=FALSE" | ||
try { | |||
$ | $conn = New-Object MySql.Data.MySqlClient.MySqlConnection($connStr) | ||
$conn.Open() | |||
$ | } catch [System.Management.Automation.PSArgumentException] { | ||
Log "Unable to connect to MySQL server, do you have the MySQL connector installed..?" | |||
Log $_ | |||
if ($SQLnoExit) { | |||
. . | return 0 | ||
} else { | |||
Exit | |||
} | |||
} catch { | |||
Log "Unable to connect to MySQL server..." | |||
Log $_.Exception.GetType().FullName | |||
Log $_.Exception.Message | |||
Log $_ | |||
if ($SQLnoExit) { | |||
return $false | |||
} else { | |||
Exit | |||
} | |||
} | |||
Log ("Connected to MySQL database " + $conn.Database + " on " + $conn.DataSource + " (ver " + $conn.ServerVersion + ")") | |||
return $conn | |||
} | |||
function Disconnect-MySQL { | |||
$SQLconn.Close() | |||
} | } | ||
# | function Execute-MySQLNonQuery([string]$query) { | ||
$ | # NonQuery - Insert/Update/Delete query where no return data is required | ||
if ($ | |||
Log (" | if ($LogMySQLNonQueries) { | ||
} else { | Log ($query) | ||
} | |||
try { | |||
$cmd = $SQLconn.CreateCommand() # Create command object | |||
$cmd.CommandText = $query # Load query into object | |||
$RowsInserted = $cmd.ExecuteNonQuery() # Execute command | |||
$cmd.Dispose() # Dispose of command object | |||
if ($RowsInserted) { | |||
return $RowInserted | |||
} else { | |||
return $false | |||
} | |||
} catch { | |||
Log ("Execute-MySQLNonQuery($query) error...") | |||
Log $_.Exception.GetType().FullName | |||
Log $_.Exception.Message | |||
Log $_ | |||
if ($SQLnoExit) { | |||
return $false | |||
} else { | |||
Exit | |||
} | |||
} | |||
} | } | ||
function Execute-MySQLQuery([string]$query) { | |||
if ( | # Query - Select etc query where return data is expected | ||
if ($LogMySQLQueries) { | |||
Log ($query) | |||
} | } | ||
try { | |||
$cmd = $SQLconn.CreateCommand() # Create command object | |||
Log ( | $cmd.CommandText = $query # Load query into object | ||
$dataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter($cmd) # Create data adapter from query command | |||
$dataSet = New-Object System.Data.DataSet # Create dataset | |||
$dataAdapter.Fill($dataSet, "data") # Fill dataset from data adapter, with name "data" | |||
$cmd.Dispose() | |||
$dataAdapter.Dispose() | |||
return $dataSet.Tables["data"] # Returns an array of results | |||
} catch { | |||
Log ("Execute-MySQLQuery($query) error...") | |||
Log $_.Exception.GetType().FullName | |||
Log $_.Exception.Message | |||
Log $_ | |||
if ($SQLnoExit) { | |||
return $false | |||
} else { | |||
Exit | |||
} | |||
} | } | ||
} | |||
function Execute-MySQLScalar([string]$query) { | |||
if ($ | if ($LogMySQLQueries) { | ||
Log (" | Log ($query) | ||
} | |||
# Scalar - Select etc query where a single value of return data is expected | |||
try { | |||
$cmd = $SQLconn.CreateCommand() # Create command object | |||
$cmd.CommandText = $query # Load query into object | |||
$cmd.ExecuteScalar() # Execute command | |||
} catch { | |||
Log ("Execute-MySQLScalar($query) error...") | |||
Log $_.Exception.GetType().FullName | |||
Log $_.Exception.Message | |||
Log $_ | |||
if ($SQLnoExit) { | |||
return $false | |||
} else { | |||
Exit | |||
} | |||
} | } | ||
} | } | ||
function Escape-MySQLText([string]$text) { | |||
$text = [regex]::replace($text, "\\", "\\") | |||
[regex]::replace($text, "'", "\'") | |||
} |
Latest revision as of 13:51, 7 May 2013
<# ========================================================================================================================================
MySQL function library ========================================================================================================================================= Simon Strutt Jan 2011 =========================================================================================================================================
Requires MySQL .NET connector to be installed on machine script is run from (tested with ver 6.2.4) Requires Standard.ps1 (for Log func)
Version 1 - Initial creation Version 2 - Added $SQLnoExit option Version 3 - Renamed $LogNonQueries to $LogMySQLNonQueries - Added $LogMySQLQueries Version 4 - Renamed funcs to more PowerShell standard #>
function Connect-MySQL([string]$user, [string]$pass, [string]$MySQLHost, [string]$database) {
# Load MySQL .NET Connector Objects [void][system.reflection.Assembly]::LoadWithPartialName("MySql.Data") # Open Connection $connStr = "server=$MySQLHost;port=3306;uid=$user;pwd=$pass;database=$database;Pooling=FALSE" try { $conn = New-Object MySql.Data.MySqlClient.MySqlConnection($connStr) $conn.Open() } catch [System.Management.Automation.PSArgumentException] { Log "Unable to connect to MySQL server, do you have the MySQL connector installed..?" Log $_ if ($SQLnoExit) { return 0 } else { Exit } } catch { Log "Unable to connect to MySQL server..." Log $_.Exception.GetType().FullName Log $_.Exception.Message Log $_ if ($SQLnoExit) { return $false } else { Exit } } Log ("Connected to MySQL database " + $conn.Database + " on " + $conn.DataSource + " (ver " + $conn.ServerVersion + ")")
return $conn
}
function Disconnect-MySQL {
$SQLconn.Close()
}
function Execute-MySQLNonQuery([string]$query) {
# NonQuery - Insert/Update/Delete query where no return data is required if ($LogMySQLNonQueries) { Log ($query) } try { $cmd = $SQLconn.CreateCommand() # Create command object $cmd.CommandText = $query # Load query into object $RowsInserted = $cmd.ExecuteNonQuery() # Execute command $cmd.Dispose() # Dispose of command object if ($RowsInserted) { return $RowInserted } else { return $false } } catch { Log ("Execute-MySQLNonQuery($query) error...") Log $_.Exception.GetType().FullName Log $_.Exception.Message Log $_ if ($SQLnoExit) { return $false } else { Exit } }
}
function Execute-MySQLQuery([string]$query) {
# Query - Select etc query where return data is expected if ($LogMySQLQueries) { Log ($query) } try { $cmd = $SQLconn.CreateCommand() # Create command object $cmd.CommandText = $query # Load query into object $dataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter($cmd) # Create data adapter from query command $dataSet = New-Object System.Data.DataSet # Create dataset $dataAdapter.Fill($dataSet, "data") # Fill dataset from data adapter, with name "data" $cmd.Dispose() $dataAdapter.Dispose() return $dataSet.Tables["data"] # Returns an array of results } catch { Log ("Execute-MySQLQuery($query) error...") Log $_.Exception.GetType().FullName Log $_.Exception.Message Log $_ if ($SQLnoExit) { return $false } else { Exit } }
}
function Execute-MySQLScalar([string]$query) {
if ($LogMySQLQueries) { Log ($query) } # Scalar - Select etc query where a single value of return data is expected try { $cmd = $SQLconn.CreateCommand() # Create command object $cmd.CommandText = $query # Load query into object $cmd.ExecuteScalar() # Execute command } catch { Log ("Execute-MySQLScalar($query) error...") Log $_.Exception.GetType().FullName Log $_.Exception.Message Log $_ if ($SQLnoExit) { return $false } else { Exit } }
}
function Escape-MySQLText([string]$text) {
$text = [regex]::replace($text, "\\", "\\") [regex]::replace($text, "'", "\'")
}