Вставьте нулевое значение в MySQL через Powershell - PullRequest
0 голосов
/ 14 мая 2019

Я получаю данные от веб-службы и хочу вставить их в базу данных MySQL с помощью Powershell. К сожалению, значения даты и времени ($ outdat) могут быть нулевыми. Но мне не удается вставить нулевое значение в этом случае. Вставка даты работает. Вот основной код:

Я уже пробовал с $ outdat = $ null, '' и [DBNull] :: Value, ни один из них не работает.

$MySQLAdminUserName = 'xxx'
$MySQLAdminPassword = 'xxx'
$MySQLDatabase = 'xxx'
$MySQLHost = 'localhost'
$ConnectionString = "server=" + $MySQLHost + ";port=3306;uid=" + $MySQLAdminUserName + ";pwd=" + $MySQLAdminPassword + ";database="+$MySQLDatabase

    Try {
        [void][System.Reflection.Assembly]::LoadWithPartialName("MySql.Data")
        $Connection = New-Object MySql.Data.MySqlClient.MySqlConnection
        $Connection.ConnectionString = $ConnectionString
        $Connection.Open()

        $MySqlCommand = New-Object MySql.Data.MySqlClient.MySqlCommand
        $MySqlCommand.Connection = $Connection

        $inoid = "123457"
        $outdat = [DBNull]::Value
        $insid = "Hello World"


            $MySqlCommand.CommandText = "INSERT INTO order_all_test (order_id, shop_id, hgsp_out_date) VALUES ('$inoid', '$insid', '$outdat');"
            $MySqlCommand.ExecuteNonQuery() | Out-Null
            $lastId = $MySqlCommand.get_LastInsertedId()

        }

        Catch {
            Write-Host "ERROR : Unable to run query : $query `n$Error[0]"
        }

        Finally {
            $Connection.Close()
            }

1 Ответ

1 голос
/ 16 мая 2019

Я нашел решение:

$outdat = "NULL"
...
$MySqlCommand.CommandText = "INSERT INTO order_all_test (order_id, shop_id, hgsp_out_date) VALUES ('$inoid', '$insid', $outdat);"

Таким образом, хитрость заключалась в том, чтобы исключить одинарные кавычки в sql.

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