【PowerShell】OledbHelper

<#	
	.NOTES
	===========================================================================
	 Created on:   	
	 Created by:   	
	 Organization: 	
	 Filename:     	OledbHelper
	===========================================================================
	.DESCRIPTION
		A toolkit for OleDb.
#>

function New-OleDbConnection
{
	<#
	.SYNOPSIS
		This functions helps you create an OleDbConnection.

	.PARAMETER $ConnectionString
		Database ConnecionString
	#>
	[OutputType([System.Data.OleDb.OleDbConnection])]
	param (
		[ValidateNotNull()]
		[Parameter(Mandatory = $true)]
		[string]$ConnectionString
	)
	
	$OleDbConnection = New-Object -TypeName System.Data.OleDb.OleDbConnection($ConnectionString)
	try
	{
		$OleDbConnection.Open()
		Write-Host 'Connected to oledb.'
		return $OleDbConnection
	}
	catch [exception]
	{
		Write-Warning ('Connect to database failed with error message:{0}' -f ,$_)
		$OleDbConnection.Dispose()
		return $null
	}
}

function Get-OleDbScalar
{
	<#
	.SYNOPSIS
		This functions returns the execution result of an SQL statement.

	.PARAMETER $ConnectionString
		A ConnecionString of Database
	
	.PARAMETER $Command
		An SQL statement
	#>
	[OutputType([System.Object])]
	param (
		[ValidateNotNull()]
		[Parameter(Mandatory = $true)]
		[string]$ConnectionString,
		[ValidateNotNull()]
		[Parameter(Mandatory = $true)]
		[string]$Command
	)
	
	[System.Data.OleDb.OleDbConnection]$OleDbConnection = New-OleDbConnection -ConnectionString $ConnectionString
	if ($null -ne $OleDbConnection)
	{
		try
		{
			$cmd = $OleDbConnection.CreateCommand()
			$cmd.CommandText = $Command
			return $cmd.ExecuteScalar()
		}
		catch [Exception]
		{
			Write-Warning ('Execute Sql command failed with error message:{0}' -f $_)
			return $null
		}
		finally
		{
			$OleDbConnection.Close()
		}
	}
	return $null
}

function Get-OleDbDataTable
{
	<#
	.SYNOPSIS
		This functions returns a DataTable of an SQL statement.

	.PARAMETER $ConnectionString
		A ConnecionString of Database
	
	.PARAMETER $Command
		An SQL statement
	#>
	[OutputType([System.Data.DataTable])]
	param (
		[ValidateNotNull()]
		[Parameter(Mandatory = $true)]
		[string]$ConnectionString,
		[ValidateNotNull()]
		[Parameter(Mandatory = $true)]
		[string]$Command
	)
	
	[System.Data.OleDb.OleDbConnection]$OleDbConnection = New-OleDbConnection -ConnectionString $ConnectionString
	if ($null -ne $OleDbConnection)
	{
		$dataSet = New-Object -TypeName System.Data.DataSet
		$dataAdapter = New-Object -TypeName System.Data.OleDb.OleDbDataAdapter($Command, $OleDbConnection)
		$dataAdapter.Fill($dataSet) | Out-Null
		return $dataSet.Tables | Select-Object -First 1
	}
	return $null
}

function Get-Entities
{
	<#
	.SYNOPSIS
		This functions returns a set of Object of an SQL statement.

	.PARAMETER $ConnectionString
		A ConnecionString of Database
	
	.PARAMETER $Command
		An SQL statement
	
	.PARAMETER $Type
		System.Type
	#>
	[OutputType([System.Collections.ArrayList])]
	param (
		[ValidateNotNull()]
		[Parameter(Mandatory = $true)]
		[string]$ConnectionString,
		[ValidateNotNull()]
		[Parameter(Mandatory = $true)]
		[string]$Command,
		[ValidateNotNull()]
		[Parameter(Mandatory = $true)]
		[type]$Type
	)
	
	[System.Data.DataTable]$dt = Get-OleDbDataTable -ConnectionString $ConnectionString -Command $Command
	if (($null -ne $dt) -and ($dt.Rows.Count -gt 0))
	{
		$list = New-Object -TypeName System.Collections.Generic.List[$Type]
		$props = $Type.GetProperties([System.Reflection.BindingFlags]::Public + [System.Reflection.BindingFlags]::Instance)
		foreach ($row in $dt.Rows)
		{
			$t = [System.Activator]::CreateInstance($Type);
			foreach ($item in $props)
			{
				if (($null -ne $row[$item.Name]) -and ([System.DBNull]::Value -ne $row[$item.Name]))
				{
					$item.SetValue($t, $row[$item.Name], $null)
				}
			}
			$list.Add($t)
		}
		return $list
	}
	return $null
}

function Get-OleDbDataSet
{
	<#
	.SYNOPSIS
		This functions returns a DataSet of a set of SQL statements.

	.PARAMETER $ConnectionString
		A ConnecionString of Database
	
	.PARAMETER $Commands
		A set of SQL statements
	#>
	[OutputType([System.Data.DataSet])]
	Param (
		[ValidateNotNull()]
		[Parameter(Mandatory = $true)]
		[string]$ConnectionString,
		[ValidateNotNull()]
		[Parameter(Mandatory = $true)]
		[string[]]$Commands
	)
	
	[System.Data.OleDb.OleDbConnection]$OleDbConnection = New-OleDbConnection -ConnectionString $ConnectionString
	if ($null -ne $OleDbConnection)
	{
		$dataSet = New-Object -TypeName System.Data.DataSet
		$cmd = [System.String]::Join(";", $Commands)
		$dataAdapter = New-Object -TypeName System.Data.OleDb.OleDbDataAdapter($cmd, $OleDbConnection)
		$dataAdapter.Fill($dataSet) | Out-Null
		return $dataSet
	}
	return $null
}

function Invoke-OleDbCommandNonQuery
{
	<#
	.SYNOPSIS
		This functions returns the boolean of execution result of an SQL statement.

	.PARAMETER $ConnectionString
		A ConnecionString of Database
	
	.PARAMETER $Command
		An SQL statement
	#>
	[OutputType([System.Boolean])]
	param (
		[ValidateNotNull()]
		[Parameter(Mandatory = $true)]
		[string]$ConnectionString,
		[ValidateNotNull()]
		[Parameter(Mandatory = $true)]
		[string]$Command
	)
	
	[System.Data.OleDb.OleDbConnection]$OleDbConnection = New-OleDbConnection -ConnectionString $ConnectionString
	if ($null -ne $OleDbConnection)
	{
		try
		{
			$cmd = $OleDbConnection.CreateCommand()
			$cmd.CommandText = $Command
			$cmd.ExecuteNonQuery() | Out-Null
			return $true
		}
		catch [Exception]
		{
			Write-Warning ('Execute Sql command failed with error message:{0}' -f $_)
			return $false
		}
		finally
		{
			$OleDbConnection.Close()
		}
	}
	return $false
}

function Invoke-OleDbCommandsNonQuery
{
	<#
	.SYNOPSIS
		This functions returns the boolean of execution result of a set of SQL statements.

	.PARAMETER $ConnectionString
		A ConnecionString of Database
	
	.PARAMETER $Commands
		A set of SQL statements
	#>
	[OutputType([System.Boolean])]
	param (
		[ValidateNotNull()]
		[Parameter(Mandatory = $true)]
		[string]$ConnectionString,
		[ValidateNotNull()]
		[Parameter(Mandatory = $true)]
		[string[]]$Commands
	)
	
	[System.Data.OleDb.OleDbConnection]$OleDbConnection = New-OleDbConnection -ConnectionString $ConnectionString
	if ($null -ne $OleDbConnection)
	{
		$transaction = $OleDbConnection.BeginTransaction()
		try
		{
			$cmd = $OleDbConnection.CreateCommand()
			$cmd.Transaction = $transaction
			foreach ($item in $Commands)
			{
				$cmd.CommandText = $item
				$cmd.ExecuteNonQuery()
			}
			$transaction.Commit()
			return $true
		}
		catch [Exception]
		{
			$transaction.Rollback()
			Write-Warning ('Execute Sql commands failed with error message:{0}' -f $_)
			return $false
		}
		finally
		{
			$OleDbConnection.Close()
		}
	}
	return $false
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值