powershell数据库操作函数

原文地址:http://blog.csdn.net/iuxin/article/details/11045639

  1. #region 配置函数 c  
  2. function c{  
  3.     #====创建object  
  4.     $o=new-object psobject  
  5.  
  6.     #-------数据库连接配置--------  
  7.     $o|Add-Member -MemberType NoteProperty -Name t -Value 'mysql'         #数据库类型  
  8.     $o|Add-Member -MemberType NoteProperty -Name h -Value 'localhost'     #主机地址  
  9.     $o|Add-Member -MemberType NoteProperty -Name u -Value 'root'          #登录名  
  10.     $o|Add-Member -MemberType NoteProperty -Name p -Value 'root'          #登录密码  
  11.     $o|Add-Member -MemberType NoteProperty -Name d -Value 'monitor'       #默认访问的数据库  
  12.     $o|Add-Member -MemberType NoteProperty -Name c -Value 'utf8'          #编码  
  13.     #--------expand--------  
  14.  
  15.     #--------expand--------  
  16.  
  17.     #====对传入参数进行验证并输出返回值  
  18.     switch($args[0]){  
  19.         't'{return $o.t;break}  
  20.         'h'{return $o.h;break}  
  21.         'u'{return $o.u;break}  
  22.         'p'{return $o.p;break}  
  23.         'd'{return $o.d;break}  
  24.         'c'{return $o.c;break}  
  25.         default{  
  26.             Write-Warning "当前参数 $args 无效,请检查参数是否正确,可用参数及表示如下:"  
  27.             write-host t : 表示数据库类型 -ForegroundColor Yellow  
  28.             write-host h : 表示主机地址 -ForegroundColor Yellow  
  29.             write-host u : 表示登录数据库的账号 -ForegroundColor Yellow  
  30.             write-host p : 表示登录数据库的密码 -ForegroundColor Yellow  
  31.             write-host d : 表示默认访问的数据库名 -ForegroundColor Yellow  
  32.             write-host d : 表示连接数据库所使用的字符集 -ForegroundColor Yellow  
  33.             exit  
  34.         }  
  35.     }  
  36. }  
  37. #endregion  
  38.  
  39. #region 数据库操作函数 _odb_  
  40. function _odb_  
  41. {  
  42.     param  
  43.     (  
  44.         $funName, #执行的函数名  
  45.         $sql      #执行的sql脚本  
  46.     )  
  47.     #====从配置函数c中,获取配置信息  
  48.     $dbtpye=c t  
  49.     $server=c h  
  50.     $uid=c u  
  51.     $pwd=c p  
  52.     $DBName=c d  
  53.     $char=c c  
  54.      
  55.     #====验证数据库类型,创建数据库对象  
  56.     switch($dbtpye){  
  57.         'mssql'{  
  58.             $conn = New-Object System.Data.SqlClient.SqlConnection  
  59.             $cmd = new-object System.Data.SqlClient.SqlCommand  
  60.             $SqlAdapter = New-Object system.Data.SqlClient.SqlDataAdapter  
  61.             break  
  62.         }  
  63.         'mysql'{  
  64.             try{  
  65.             [void][System.Reflection.Assembly]::LoadWithPartialName("mysql.data")  
  66.             }catch{Write-Warning '请安装mysql连接组件mysql-connector-net-6.5.4'}  
  67.             $conn = New-Object MySql.Data.MySqlClient.MySqlConnection  
  68.             $cmd = new-object mysql.data.mysqlclient.mysqlcommand  
  69.             $SqlAdapter = New-Object mysql.Data.mySqlClient.mySqlDataAdapter  
  70.             break  
  71.         }  
  72.     }  
  73.     try{  
  74.         $conn.ConnectionString="server=$server;uid=$uid;pwd=$PWD;database=$DBName;charset=$char"  
  75.         $conn.open()  
  76.     }  
  77.     catch{  
  78.         Write-warning '数据库连接错误!'  
  79.         return $false  
  80.     }  
  81.     $cmd.Connection=$conn  
  82.  
  83.      
  84.     #region用于写入、更新等无返回值操作 _exec_  
  85.     function _exec_  
  86.     {  
  87.         $cmd.CommandText=$sql  
  88.         [void]$cmd.ExecuteNonQuery()  
  89.     }  
  90.     #endregion  
  91.      
  92.     #region用于查询、有返回值操作 _get_  
  93.     function _get_  
  94.     {  
  95.         $cmd.commandtext=$sql  
  96.         $SqlAdapter.SelectCommand = $cmd  
  97.         $DataSet = New-Object System.Data.DataSet  
  98.         [void]$SqlAdapter.Fill($DataSet,"data")  
  99.         return $dataset.tables['data']  
  100.     }  
  101.     #endregion  
  102.  
  103.     #判断传入值,并执行相应函数  
  104.     switch($funName){  
  105.         '_exec_'{_exec_;break}  
  106.         '_get_'{_get_;break}  
  107.     }  
  108.     $conn.Close()  
  109. }  
  110. #endregion  
#region 配置函数 c
function c{
    #====创建object
    $o=new-object psobject

    #-------数据库连接配置--------
    $o|Add-Member -MemberType NoteProperty -Name t -Value 'mysql'         #数据库类型
    $o|Add-Member -MemberType NoteProperty -Name h -Value 'localhost'     #主机地址
    $o|Add-Member -MemberType NoteProperty -Name u -Value 'root'          #登录名
    $o|Add-Member -MemberType NoteProperty -Name p -Value 'root'          #登录密码
    $o|Add-Member -MemberType NoteProperty -Name d -Value 'monitor'       #默认访问的数据库
    $o|Add-Member -MemberType NoteProperty -Name c -Value 'utf8'          #编码
    #--------expand--------

    #--------expand--------

    #====对传入参数进行验证并输出返回值
    switch($args[0]){
        't'{return $o.t;break}
        'h'{return $o.h;break}
        'u'{return $o.u;break}
        'p'{return $o.p;break}
        'd'{return $o.d;break}
        'c'{return $o.c;break}
        default{
            Write-Warning "当前参数 $args 无效,请检查参数是否正确,可用参数及表示如下:"
            write-host t : 表示数据库类型 -ForegroundColor Yellow
            write-host h : 表示主机地址 -ForegroundColor Yellow
            write-host u : 表示登录数据库的账号 -ForegroundColor Yellow
            write-host p : 表示登录数据库的密码 -ForegroundColor Yellow
            write-host d : 表示默认访问的数据库名 -ForegroundColor Yellow
            write-host d : 表示连接数据库所使用的字符集 -ForegroundColor Yellow
            exit
        }
    }
}
#endregion

#region 数据库操作函数 _odb_
function _odb_
{
	param
	(
		$funName, #执行的函数名
		$sql      #执行的sql脚本
	)
    #====从配置函数c中,获取配置信息
    $dbtpye=c t
    $server=c h
    $uid=c u
    $pwd=c p
    $DBName=c d
    $char=c c
    
    #====验证数据库类型,创建数据库对象
    switch($dbtpye){
        'mssql'{
            $conn = New-Object System.Data.SqlClient.SqlConnection
            $cmd = new-object System.Data.SqlClient.SqlCommand
            $SqlAdapter = New-Object system.Data.SqlClient.SqlDataAdapter
            break
        }
        'mysql'{
            try{
            [void][System.Reflection.Assembly]::LoadWithPartialName("mysql.data")
            }catch{Write-Warning '请安装mysql连接组件mysql-connector-net-6.5.4'}
            $conn = New-Object MySql.Data.MySqlClient.MySqlConnection
            $cmd = new-object mysql.data.mysqlclient.mysqlcommand
            $SqlAdapter = New-Object mysql.Data.mySqlClient.mySqlDataAdapter
            break
        }
    }
	try{
		$conn.ConnectionString="server=$server;uid=$uid;pwd=$PWD;database=$DBName;charset=$char"
		$conn.open()
	}
	catch{
		Write-warning '数据库连接错误!'
		return $false
	}
	$cmd.Connection=$conn

    
	#region用于写入、更新等无返回值操作 _exec_
	function _exec_
	{
		$cmd.CommandText=$sql
		[void]$cmd.ExecuteNonQuery()
	}
	#endregion
	
	#region用于查询、有返回值操作 _get_
	function _get_
	{
		$cmd.commandtext=$sql
	    $SqlAdapter.SelectCommand = $cmd
	    $DataSet = New-Object System.Data.DataSet
	    [void]$SqlAdapter.Fill($DataSet,"data")
	    return $dataset.tables['data']
	}
	#endregion

	#判断传入值,并执行相应函数
    switch($funName){
        '_exec_'{_exec_;break}
        '_get_'{_get_;break}
    }
	$conn.Close()
}
#endregion


c为配置函数,可扩展,所有的配置信息的设置与获取都由c完成。

函数的使用也非常简单,如果需要对数据进行写入操作,执行以下代码即可:

_odb_  '_exec_'  $sql

如果需要执行有返回值的操作,如需获取数据,则执行以下代码即可:

_odb_  '_get_'  $sql

返回值为dataset对象


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值