J'essaie de renvoyer le dernier ID inséré après l'exécution d'une instruction MySQL INSERT avec PowerShell. Mon INSERT fonctionne correctement et les données sont insérées dans la base de données comme prévu. Le problème que j'ai est saisissant l'identification de cette rangée qui vient d'être insérée.Impossible de renvoyer le dernier ID connu après une instruction INSERT
Mon code est ci-dessous:
./MySQL.ps1 -Query "insert into table (field1,field2,field3,field4) values ('$val1','$val2','$val3','$val4')"
$last_id = ./MySQL.ps1 -Query "SELECT LAST_INSERT_ID()"
Write-Host "Last ID: $last_id"
retours:
Last ID: System.Data.DataRow
MySQL.ps1
:
Param(
[Parameter(
Mandatory = $true,
ParameterSetName = '',
ValueFromPipeline = $true)]
[string]$Query
)
$MySQLAdminUserName = 'root'
$MySQLAdminPassword = 'password'
$MySQLDatabase = 'storage_manager'
$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()
$Command = New-Object MySql.Data.MySqlClient.MySqlCommand($Query, $Connection)
$DataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter($Command)
$DataSet = New-Object System.Data.DataSet
$RecordCount = $dataAdapter.Fill($dataSet, "data")
$DataSet.Tables[0]
} catch {
Write-Host "ERROR : Unable to run query : $query `n$Error[0]"
} finally {
$Connection.Close()
}
J'ai aussi essayé avec ce qui suit et obtenir le même dans fo.
SELECT max(id) FROM mytab WHERE category = 1
Cela a fonctionné parfaitement. À votre santé. – CassOwary