【问题标题】:Creating a PowerShell Connection String创建 PowerShell 连接字符串
【发布时间】:2013-06-07 06:59:35
【问题描述】:

我一直在尝试创建一个允许我使用 PowerShell 连接到本地数据库的 ConnnectionString。以下是我的代码:

$conn = New-Object System.Data.SqlClient.SqlConnection
$conn.ConnectionString = "Server=localhost;Database=test;Uid=<username here>;Pwd=<password here>;"
$conn.Open()
$sql = "SELECT EMP_STATUS FROM test_table"
$cmd = New-Object System.Data.SqlClient.SqlCommand($sql,$conn)
$rdr = $cmd.ExecuteReader()
while($rdr.Read())
{
    $test = $rdr["EMP_STATUS"].ToString()
}
Write-Output $test

但是,我不知道自己做错了什么,并且已经把头发拔了很长一段时间了。谁能帮我弄清楚我在 ConnectionString 中做错了什么?

谢谢大家!!


我意识到我的第一个问题是我有 MySQL 数据库,而不是 SQL 数据库。因此,我将不得不使用不同的方法进行连接。这正是我需要你帮助的地方!!到目前为止,我已将代码修改如下:

[void][System.Reflection.Assembly]::LoadWithPartialName("MySql.Data")
$conn = New-Object MySql.Data.MySqlClient.MySqlConnection

$connString = "server=localhost;port=3306;uid=<username here>;pwd=<password here> ;database=test;"
$conn.ConnectionString = $connString
$conn.Open()
$sql = "SELECT EMP_STATUS FROM test_table"
$cmd = New-Object MySql.Data.MySqlClient.MySqlCommand($sql,$conn)
$rdr = $cmd.ExecuteReader()
$test = @()
while($rdr.Read())
{
    $test += ($rdr["EMP_STATUS"].ToString())
}
Write-Output $test

不过,还有几个问题: 1)如何使用 MySQL .NET 连接工具连接本地 MySQL 数据库? 2) 这个 PowerShell 脚本应该保存在哪里? 3) 我应该做任何其他更改吗?

非常感谢

【问题讨论】:

  • 错误是什么?什么不起作用?
  • 嘿,我刚刚注意到我使用了错误的连接方法连接到 MySQL 数据库。但是,我在下面发布了另一个问题,询问我如何使用 .NET 连接工具连接到本地 MySQL 数据库。
  • 请编辑您的问题以提供更多信息。答案应该是问题的答案,它们不是用来讨论的。

标签: powershell powershell-2.0


【解决方案1】:

试试这个:

$conn.ConnectionString = "Server=localhost;Database=test;User ID=<username here>;Password=<password here>;"

然后 $test 只给你在选择中找到的最后一个值! 要让 $test 包含 select 中的所有值,请像这样更改您的代码:

$conn = New-Object System.Data.SqlClient.SqlConnection
$conn.ConnectionString = "Server=localhost;Database=test;User ID=<username here>;Password=<password here>;"
$conn.Open()
$sql = "SELECT EMP_STATUS FROM test_table"
$cmd = New-Object System.Data.SqlClient.SqlCommand($sql,$conn)
$rdr = $cmd.ExecuteReader()
$test = @()
while($rdr.Read())
{
    $test += ($rdr["EMP_STATUS"].ToString())
}
Write-Output $test

【讨论】: