#加载.net的winform模块
[Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

$app=[System.Windows.Forms.Application]
$myForm=new-object System.Windows.Forms.Form
$myForm.Text="T_sql Excute window"

 
#执行程序的按钮

$button1 = new-object System.Windows.Forms.Button
$button1.Size = new-object System.Drawing.Size  -argumentlist 75, 23
$button1.Text = "执行程序"
$button1.Location = new-object System.Drawing.Point -argumentlist 200, 200

 
#获取第一个参数

$label1 = new-object System.Windows.Forms.Label;
$label1.Location = new-object System.Drawing.Point -argumentlist 1, 10
$label1.Size = new-object System.Drawing.Size  -argumentlist 80, 15
$label1.Text = "数据库地址 : "
$textbox1=new-object System.Windows.Forms.TextBox
$textBox1.Multiline = $true;
$textBox1.Text = ""
$textBox1.Size = new-object System.Drawing.Size  -argumentlist 150, 15
$textBox1.Location = new-object System.Drawing.Point -argumentlist 90, 10

#获取第二个参数
$label2 = new-object System.Windows.Forms.Label;
$label2.Location = new-object System.Drawing.Point -argumentlist 1, 50
$label2.Size = new-object System.Drawing.Size  -argumentlist 80, 15
$label2.Text = "用户名 : "
$textbox2=new-object System.Windows.Forms.TextBox
$textBox2.Multiline = $true;
$textBox2.Text = ""
$textBox2.Size = new-object System.Drawing.Size  -argumentlist 150, 15
$textBox2.Location = new-object System.Drawing.Point -argumentlist 90, 50

#获取第三个参数
$label3 = new-object System.Windows.Forms.Label;
$label3.Location = new-object System.Drawing.Point -argumentlist 1, 90
$label3.Size = new-object System.Drawing.Size  -argumentlist 80, 15
$label3.Text = "密码 : "
$textbox3=new-object System.Windows.Forms.TextBox
$textBox3.Multiline = $true;
$textBox3.Text = ""
$textBox3.Size = new-object System.Drawing.Size  -argumentlist 150, 15
$textBox3.Location = new-object System.Drawing.Point -argumentlist 90, 90

#获取第四个参数
$label4 = new-object System.Windows.Forms.Label;
$label4.Location = new-object System.Drawing.Point -argumentlist 1, 130
$label4.Size = new-object System.Drawing.Size  -argumentlist 80, 15
$label4.Text = "tsql路径 : "
$textbox4=new-object System.Windows.Forms.TextBox
$textBox4.Multiline = $true;
$textBox4.Text = ""
$textBox4.Size = new-object System.Drawing.Size  -argumentlist 150, 15
$textBox4.Location = new-object System.Drawing.Point -argumentlist 90, 130
# $textbox2=new-object System.Windows.Forms.TextBox
# $textBox2.Multiline = $true;
# $textBox2.Text = "test"
# $textBox2.Size = new-object System.Drawing.Size  -argumentlist 281, 113
#$flowLayoutPanel1 = new-object System.Windows.Forms.FlowLayoutPanel
$myForm.Controls.Add($label1)
$myForm.Controls.Add($textbox1)
$myForm.Controls.Add($label2)
$myForm.Controls.Add($textbox2)
$myForm.Controls.Add($label3)
$myForm.Controls.Add($textbox3)
$myForm.Controls.Add($label4)
$myForm.Controls.Add($textbox4)
$myForm.Controls.Add($button1)
#$myForm.Controls.Add($textbox2)
#$myForm.Controls.Add($label1)
#$flowLayoutPanel1.Controls.Add($label1);
#$flowLayoutPanel1.Controls.Add($textBox1);
#$flowLayoutPanel1.Controls.Add($textBox2);
#$flowLayoutPanel1.Controls.Add($button1);
#$flowLayoutPanel1.Dock = "Fill"
#$flowLayoutPanel1.FlowDirection = "TopDown"

#下面是批量执行tsql语句的函数
function exec_tsql{ 
         param( [string] $serverInstance ,
        [string] $userName ,
[string] $password ,
[string] $ScriptPath)

$ScriptList=""
[System.IO.DirectoryInfo]$DirectoryInfo=New-Object System.IO.DirectoryInfo $ScriptPath | Sort-Object
foreach( $f In ($DirectoryInfo.GetFiles("*.sql"))) 
  {
    $ScriptList=$ScriptList+";"+$f.Name
  }

Try
{
    #[void][System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.ConnectionInfo') |out-null
    #$ServerConnection =new-object Microsoft.SqlServer.Management.Common.ServerConnection $serverInstance,$userName, $password
    Import-Module "sqlps" -DisableNameChecking
#try
    #{
        #$ServerConnection.BeginTransaction()
        #Write-Host "BeginTransaction ."
        
        [System.Text.StringBuilder]$Sql=""
        Foreach($File In $ScriptList.Split(";"))
        {        
            if($File -ne "")
            {
                #$Sql=$Sql.AppendLine(([System.Io.File]::OpenText($ScriptPath+$File)).ReadToEnd())
                #$ServerConnection.ExecuteNonQuery($Sql)|out-null
$fileurl = $ScriptPath + $File
Invoke-Sqlcmd -InputFile $fileurl  -ServerInstance $serverInstance -Database "Master" -Username $userName -Password $password 
                $Sql=""
                
                Write-Host $ScriptPath$File  " ...OK!"
            }
        }
        #$ServerConnection.CommitTransaction()
        
        #Write-Host "CommitTransaction ."      
    #}
    #Catch
    #{
    #    If ($ServerConnection.TransactionDepth -gt 0)
    #        {
    #            $ServerConnection.RollBackTransaction()
    #            Write-Host "RollBackTransaction ."
    #        }            
    #     
    #    Write-Error $_     
    #}    
}
Catch
{
    Write-Error $_
}
}
#这个函数到这里结束

#这里是执行按钮的事件,就是执行上面写的函数
$button1ClickEventHandler = [System.EventHandler] {
  $serverInstance = $textBox1.Text
  $userName = $textBox2.Text
  $password = $textBox3.Text
  $ScriptPath = $textBox4.Text
 exec_tsql $serverInstance $userName $password $ScriptPath
  [System.Windows.Forms.MessageBox]::Show("执行成功")
}
$button1.Add_Click($button1ClickEventHandler)
$app::EnableVisualStyles()
$app::Run($myForm)

powershell利用winform批量执行tsql语句的更多相关文章

  1. SQL*PLUS中批量执行SQL语句

    SQL*PLUS中批量执行SQL语句 今天由于工作的需要,要在CMD中批量执行大量的SQL语句,对于Oracle学习还处在入门阶段的我,只能硬着头皮到处去寻找资料(主要是网络资料,也包括自己的电子书) ...

  2. 批量执行sql语句

    基本使用 $sqls="sql语句1;sql语句2;sql语句n"; 或 $sqls="insert into xx;";  $sqls.="inse ...

  3. c#实现用SQL池(多线程),定时批量执行SQL语句 【转】

    在实际项目开发中,业务逻辑层的处理速度往往很快,特别是在开发Socket通信服务的时候,网络传输很快,但是一旦加上数据库操作,性能一落千丈,数据库操作的效率往往成为一个系统整体性能的瓶颈.面对这问题, ...

  4. PHP mysqli 增强 批量执行sql 语句的实现代码

    本篇文章介绍了,在PHP中 mysqli 增强 批量执行sql 语句的实现代码.需要的朋友参考下. mysqli 增强-批量执行sql 语句 <?php //mysqli 增强-批量执行sql ...

  5. c#实现用SQL池(多线程),定时批量执行SQL语句

    在实际项目开发中,业务逻辑层的处理速度往往很快,特别是在开发Socket通信服务的时候,网络传输很快,但是一旦加上数据库操作,性能一落千丈,数据库操作的效率往往成为一个系统整体性能的瓶颈.面对这问题, ...

  6. mysqli扩展库应用---批量执行sql语句

    1, mysqli批量执行sql语句.基本语法: $sqls=”sql1;sql2;………” mysqli::multi_query($sqls); 同一个$sqls要么是增删改语句集合,要么是查询语 ...

  7. JDBC连接MYSQL,批量执行SQL语句或在执行一个SQL语句之前执行一个SQL语句

    conn = MysqlJdbcUtils.getConnection(); Statement ps=conn.createStatement(); ps.addBatch("trunca ...

  8. Jmeter(三十八)Jmeter Question 之 ‘批量执行SQL语句’

    知识使我们变得玩世不恭,智慧使我们变得冷酷无情,我们思考的太多,感知太少,除了机器,我们更需要人性,除了智慧,我们需要仁慈和善良. ------出自查理卓别林的演讲 前面有提到Jmeter使用JDBC ...

  9. executeBatch()批量执行Sql语句

    executeBatch()方法:用于成批地执行SQL语句,但不能执行返回值是ResultSet结果集的SQL语句,而是直接执行stmt.executeBatch(); addBatch():向批处理 ...

随机推荐

  1. bzoj 1034 (田忌赛马++)

    /* 这类题的最优策略: 自己最好的干掉对方最好的 或者 自己最差的干掉对方最差的 不能的话 用自己最差的 对阵对方最好的 这样是最优的 实现嘛 搞两个队列跑一跑 */ #include<ios ...

  2. jquery live hover事件的替代写法

    HTML中的hover行为通常在样式中定义,利用jquery实现此效果有两种情况. 第一种是常见的针对页面中静态的元素,以改变元素样式中的border-color为例,写法如下: $(function ...

  3. myeclipse跟eclipse中使用github做版本控制工具

    今天早上花了一上午的时间,了解了在myeclipse跟eclipse中使用github. 好吧 说说怎么做的,让大伙少走一点路,我就简单描述下,需要软件的私信我 第一:下载git 第二:靠谱.但是pu ...

  4. php输出金字塔

    <?php for($i=0;$i<10;$i++){ for($j=1;$j<=$i;$j++){ echo $i.'*'.$j.'|'; } echo '<br>'; ...

  5. (转) ThinkPHP模板自定义标签使用方法

    这篇文章主要介绍了ThinkPHP模板自定义标签使用方法,需要的朋友可以参考下  转之--http://www.jb51.net/article/51584.htm   使用模板标签可以让网站前台开发 ...

  6. 访问的是A网址,但是跳转B网址的内容,地址栏还是A网址

    最近家里宽带续费,是用小区小广告的宽带,打开http://download.csdn.net/ 或其他一些设计下载.购物商城或威客网址进不去 提示 经过网上大量搜索和请教,都说是以下几点引起的 1.网 ...

  7. 高性能IO设计模式之阻塞/非阻塞,同步/异步解析

    提到高性能,我想大家都喜欢这个,今天我们就主要来弄明白在高性能的I/O设计中的几个关键概念,做任何事最重要的第一步就是要把概念弄的清晰无误不是么?在这里就是:阻塞,非阻塞,同步,异步. OK, 现在来 ...

  8. magnific-popup 一款优秀, 多种功能于一身的弹出层jQuery插件.

    功能很强大:灯箱, 画廊, 放大图片, 弹出Youtube GoogleMap, ajax读取popup等等文档:http://dimsemenov.com/plugins/magnific-popu ...

  9. MongoDB学习--高级查询 [聚合Group]

    Group大约需要一下几个参数. key:用来分组文档的字段.和keyf两者必须有一个 keyf:可以接受一个javascript函数.用来动态的确定分组文档的字段.和key两者必须有一个 initi ...

  10. 大脑皮层是如何工作的 《人工智能的未来》(<On intelligence>)读书笔记

    PS:今年寒假的读书笔记,挖下的坑已无力再填...不过有关智能和人工智能的书还是要继续读的~ 正文: 我觉得书名翻译不是很确切,全书讨论的核心应该更是在“真”智能:讨论对人脑智能的理解,可以怎样帮助我 ...