我正在嘗試使用 Powershell 將資料插入 SQL 資料庫。這是我的代碼:
$date = Get-Date -Format 'dd/MM/yyyy'
$time = Get-Date -Format 'HH:mm:ff'
Add-Type -AssemblyName System.Data.OracleClient
$OracleConnectionString = "SERVER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)
HOST=***)(PORT=***))(CONNECT_DATA=(SERVICE_NAME=***)));uid=***;pwd=***;"
$OracleConnection = New-Object System.Data.OracleClient.OracleConnection($OracleConnectionString);
$OracleConnection.Open()
$command = New-Object System.Data.OracleClient.OracleCommand
$Command.Connection = $OracleConnection
$Command.CommandText = "INSERT INTO DATETEST (DATETEST, ZAHL) VALUES (TO_DATE('".$date.", ".$time."', 'DD/MM/YYYY, HH:MI:SS'), 21)"
$Command.ExecuteNonQuery()
$OracleConnection.Close()
錯誤$command.ExecuteNonQuery()在它說的地方:
使用“0”引數呼叫“ExecuteNonQuery”的例外:“CommandText 屬性未正確初始化”
當我用行中的變數替換TO_DATE函式時,它可以作業并且值被插入。但我需要該函式才能將日期時間插入表中。$dateCommand.CommandTextTO_DATE
我的一位同事撰寫了這個 PHP 檔案并使用了相同的函式,并且它可以作業:
"insert into datetest(datetest)
VALUES (TO_DATE('".$date.", ".$time."', 'DD/MM/YYYY, HH24:MI'))";
我究竟做錯了什么?
uj5u.com熱心網友回復:
這個問題是因為 Powershell 的字串連接運算子與 PHP 的不一樣。
讓我們決議代碼來看看發生了什么。PHP-stydel 陳述句使用句點.進行連接。那是,
"insert into datetest(datetest) VALUES (TO_DATE('"
.$date.
", "
.$time."
', 'DD/MM/YYYY, HH24:MI'))";
將$date' 值添加到字串中,以及$time's. 由于 Powershell 的字串連接運算子是 ,因此輸出不是您所期望的。令人驚訝的是,結果是一個空字串。這發生在默認情況下,Powershell 不會抱怨未分配的屬性和變數。設定嚴格模式set-strictmode -version latest,看看輸出是什么:
Set-StrictMode -Version latest
"INSERT INTO DATETEST (DATETEST, ZAHL) VALUES `
(TO_DATE('".$date.", ".$time."', 'DD/MM/YYYY, HH:MI:SS'), 21)"
PropertyNotFoundException: The property '24.10.2022' cannot be found on this object.
Verify that the property exists.
根據錯誤訊息,Powershell 認為訪問字串物件的屬性'24.10.2022'不存在。
解決方案:像這樣使用正確的連接運算子,
"INSERT INTO DATETEST (DATETEST, ZAHL) VALUES (TO_DATE('" $date ", " $time "', 'DD/MM/YYYY, HH:MI:SS'), 21)"
還可以考慮使用復合格式以提高可讀性。像這樣,
"INSERT INTO DATETEST (DATETEST, ZAHL) VALUES (TO_DATE('{0} {1}', 'DD/MM/YYYY, HH:MI:SS'), 21)" -f $date, $time
# Output
INSERT INTO DATETEST (DATETEST, ZAHL) VALUES (TO_DATE('24.10.2022 14.19.70', 'DD/MM/YYYY, HH:MI:SS'), 21)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/521373.html
