Проблемы с форматом строки подключения ODBC - PullRequest
0 голосов
/ 04 сентября 2018

Недавно я хотел создать функцию в моем $profile в PowerShell, которая подключается к моему серверу Postgres и выполняет запрос. Функция выглядит примерно так:

function db{
    Param(
        [string]$provider = "PostgreSQL",
        [string]$type = "UNICODE",
        [string]$server = "localhost",
        [string]$port = "5432",
        [string]$db = "dbname",
        [string]$uid = "username",
        [string]$pwd = "password",
        [string]$q = ""
    )
    #future upgrade: read default parameters from file

    $DBConnectionString = 'Driver={'+$driver+' '+$type+'}:Server='+$server+';Port='+$port+';Database='+$db+';Uid='+$uid+';Pwd='+$pwd+';';
    $DBConn = New-Object System.Data.Odbc.OdbcConnection;
    $DBConn.ConnectionString = $DBConnectionString;
    Write-Output "this connectionstring: $DBConnectionString";
    $DBConn.Open();
    $DBCmd = $DBConn.CreateCommand();
    $DBCmd.CommandText = $q;
    $DBCmd.ExecuteReader();
    $DBConn.Close();
}

Как видите, я поставил Write-Output, чтобы увидеть значение строки подключения.

Ошибка, которая выдаётся мне при выводе:

Exception setting "ConnectionString": "Format of the initialization string
does not conform to specification starting at index 0."
At C:\Users\...\Microsoft.PowerShell_profile.ps1:84 char:1
+ $DBConn.ConnectionString = $DBConnectionString

Write-Output возвращает:

this connectionstring: Driver={PostgreSQL UNICODE}:Server=localhost;Port=5432;Database=dbname;Uid=username;Pwd=password;

Таким образом, значение, содержащееся в переменной $DBConnectionString, является правильным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...