Я использую System.Data.SQLite
поставщик ADO.NET для SQLite и следующий код Powershell для выполнения запросов (и незапросов) к БД Sqlite3:
Function Invoke-SQLite ($DBFile,$Query) {
try {
Add-Type -Path ".\System.Data.SQLite.dll"
}
catch {
write-warning "Unable to load System.Data.SQLite.dll"
return
}
if (!$DBFile) {
throw "DB Not Found" R
Sleep 5
Exit
}
$conn = New-Object System.Data.SQLite.SQLiteConnection
$conn.ConnectionString="Data Source={0}" -f $DBFile
$conn.Open()
$cmd = $Conn.CreateCommand()
$cmd.CommandText = $Query
#$cmd.CommandTimeout = 10
$ds = New-Object system.Data.DataSet
$da = New-Object System.Data.SQLite.SQLiteDataAdapter($cmd)
[void]$da.fill($ds)
$cmd.Dispose()
$conn.Close()
write-host ("{0} Row(s) returned " -f ($ds.Tables[0].Rows|Measure-Object|Select -ExpandProperty Count))
return $ds.Tables[0]
}
Проблема в том, что пока она тривиальназнать, сколько строк было выбрано в операции запроса, то это не так, если операция INSERT, DELETE или UPDATE (незапросы)
Я знаю, что мог бы использовать метод ExecuteNonQuery, но мне нуженуниверсальная обертка, которая возвращает количество затронутых строк, будучи независимой от запроса, который она выполнила (как, например, Invoke-SQLCmd)
Возможно ли это?
Спасибо!