powershell连接数据库_PowerShell 连接SQL Server 数据库

news/2024/7/7 18:27:27

PowerShell 通过ADO.NET连接SQL Server数据库,并执行SQL脚本。工作中整理的一小段脚本,后来没有用上,先记录在这里:

建立数据库连接

查询返回一个DataTatble对象

执行一条SQL语句

通过事物执行多条SQL语句

#

# 建立数据库连接.

#

function New-SqlConnection([string]$connectionStr)

{

$SqlConnection = New-Object System.Data.SqlClient.SqlConnection

$SqlConnection.ConnectionString = $connectionStr

try{

$SqlConnection.Open()

Write-Host 'Connected to sql server.'

return $SqlConnection

}

catch [exception] {

Write-Warning ('Connect to database failed with error message:{0}' -f ,$_)

$SqlConnection.Dispose()

return $null

}

}

#

# 查询返回一个DataTable对象

#

function Get-SqlDataTable

{

param

(

[System.Data.SqlClient.SqlConnection]$SqlConnection,

[string]$query

)

$dataSet = new-object "System.Data.DataSet" "WrestlersDataset"

$dataAdapter = new-object "System.Data.SqlClient.SqlDataAdapter" ($query,$SqlConnection)

$dataAdapter.Fill($dataSet) | Out-Null

return $dataSet.Tables | select -First 1

}

#

# 执行一条SQL命令

#

function Execute-SqlCommandNonQuery

{

param

(

[System.Data.SqlClient.SqlConnection]$SqlConnection,

[string]$Command

)

$cmd = $SqlConnection.CreateCommand()

try

{

$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{

$SqlConnection.Close()

}

}

#

# 通过事物处理执行多条SQL命令

#

function Execute-SqlCommandsNonQuery

{

param

(

[System.Data.SqlClient.SqlConnection]$SqlConnection,

[string[]]$Commands

)

$transaction = $SqlConnection.BeginTransaction()

$command = $SqlConnection.CreateCommand()

$command.Transaction = $transaction

try

{

foreach($cmd in $Commands) {

#Write-Host $cmd -ForegroundColor Blue

$command.CommandText = $cmd

$command.ExecuteNonQuery()

}

$transaction.Commit()

return $true

}

catch [Exception] {

$transaction.Rollback()

Write-Warning ('Execute Sql commands failed with error message:{0}' -f $_)

return $false

}

finally{

$SqlConnection.Close()

}

}

×用微信扫描并分享


http://lihuaxi.xjx100.cn/news/239523.html

相关文章

16G 手机清理

1.16G 手机清理 清理top 5 的应用的缓存即可 2,hw wife 连接模块 低于 app wifi 的连接模块。 在同样的电脑热点面前,hw 连补上电脑热点,apple 可以连上电脑热点。 其他差异不大。 2.奇兔刷机 tencent应用宝 and 手机管理,备份软件 http://w…

MySQL · myrocks · MyRocks之memtable切换与刷盘

概述 MyRocks的memtable默认是skiplist,其大小和个数分别由参数write_buffer_size和max_write_buffer_number控制。数据写入时先写入active memtable, 当active memtable写满时,active memtable会转化为immutable memtable. immutable memtable数据是不会…

强化学习简介

by Thomas Simonini通过托马斯西蒙尼(Thomas Simonini) Reinforcement learning is an important type of Machine Learning where an agent learn how to behave in a environment by performing actions and seeing the results.强化学习是机器学习的一种重要类型&#xff0…

android 无法接收广播_别告诉我你不认识Android中广播接收者(二)

前面我们了解了什么是广播接收者与广播接收者的创建,这一次我们要接着继续去了解广播接收者的相关知识,这些知识包括广播接收者的注册、自定义广播与广播的类型。当我们学习完广播接收者之后,该如何才能让它起到作用呢?还有广播接…

hic染色体构想_了解微服务:从构想到起点

hic染色体构想by Michael Douglass迈克尔道格拉斯(Michael Douglass) 了解微服务:从构想到起点 (Understanding Microservices: From Idea To Starting Line) Over the last two months, I have invested most of my free time learning the complete ins-and-outs…

Linux-find命令应用举例-按时间筛选和删除文件

find参数说明: find有很多参数是以动作首字母时间的方式用于按访问、改变、更新时间来筛选文件。 动作表达: a(last accessed) 最近一次访问时间 c(last changed) 最近一次改变时间 m(last modified) 最近一次修改时间注意此上的c和m的区别,…

自动获取mysql建表语句_脚本工具---自动解析mysql建表语句,生成sqlalchemy表对象声明...

常规建表语句:CREATE TABLE test_table (id int(11) NOT NULL,name char(64) NOT NULL,password char(64) NOT NULL,PRIMARY KEY (name,id)) ENGINEInnoDB DEFAULT CHARSETutf8 COMMENTtest;解析脚本代码:# coding:utf-8import redeftable_design_transf…

MYSQL体系结构-来自期刊

MYSQL体系结构-来自期刊 MySQL三层体系结构|-----------------------------------------------------------------------------------| | mysqld-SQL层 | |-------------------------------------------…