嘿,我想知道如何从powershell中连接到firebird数据库(gdb)文件。有没有办法使用.net数据提供程序连接firebird?有没有办法将System.Data.Odbc.OdbcConnection连接到firebird?
答案 0 :(得分:1)
function Get-ODBC-Data{
param([string]$query=$(throw 'query is required.'))
$conn=New-Object System.Data.Odbc.OdbcConnection
$connStr = "Driver={Red Database/Firebird driver};Server=localhost;Port=****;Database=*.fdb;Uid=user;Pwd=userpassword;"
$conn.ConnectionString= $connStr
$conn.open
$cmd=new-object System.Data.Odbc.OdbcCommand($query,$conn)
$cmd.CommandTimeout=15
$ds=New-Object system.Data.DataSet
$da=New-Object system.Data.odbc.odbcDataAdapter($cmd)
[void]$da.fill($ds)
$ds.Tables[0]
#Write-Output $ds.Tables[0].rows.count
$conn.close()
}
$query = @"
select count(*)
from UNIFO_PAYMENT U
join DOCUMENT D on D.ID = U.ID
"@
$result = Get-ODBC-Data -query $query
答案 1 :(得分:0)
是的,powershell允许您创建.Net类并调用.Net方法。见here。因此,您可以轻松地将C#代码转换为PowerShell。
答案 2 :(得分:0)
来自@Alexandr的代码来自https://www.andersrodland.com/working-with-odbc-connections-in-powershell/
我建议你阅读整篇文章。虽然他也没有完全解释代码,但我认为它是相当自我记录的,唯一缺少的信息是如何获取/使用Firebird驱动程序。
您可以从firebird https://www.firebirdsql.org/en/odbc-driver/
获取ODBC驱动程序安装程序安装后,打开Windows ODBC管理(odbcad32.exe),检查驱动程序选项卡,确保" Firebird / Interbase(r)驱动程序"在那儿。
从此处您可以使用该驱动程序名称来运行@Alexandr的代码
$connStr = "Driver=Firebird/Interbase(r) driver;Server=localhost;Port=****;Database=*.fdb;Uid=user;Pwd=userpassword;"
或转到“用户DSN”选项卡或系统DSN选项卡。单击添加,选择firebird驱动程序,设置带有名称的DSN,数据库的路径以及通常所需的其他所需数据库注册信息。保持DSN名称简单,它将是您将使用的标识符。
然后你可以简单地用
替换$ constr$connStr = "DSN=YourDsnName;"