【发布时间】:2016-06-30 17:15:28
【问题描述】:
我想在 PowerShell 函数中打开 Microsoft Access DB。我会将连接变量存储在主代码中。
这是代码:
Function open_database($dbname) {
# Open the database
try
{
$global:conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=$dbname;Persist Security Info=False"
$global:conn.Open()
}
catch
{
write-host "Error connecting to the database " + $dbname
return $false
}
return $true
}
# M A I N
$conn = New-Object System.Data.OleDb.OleDbConnection
if (-Not (open_database("C:\temp\mydb.mdb"))) {exit}
我收到此错误消息:
连接数据库时出错 + C:\temp\mydb.mdb
在此对象上找不到属性“ConnectionString”。验证该属性是否存在并且可以设置。
我该如何解决这个问题?
我认为 PowerShell 将 global 与 conn 关联,而不是全局与 conn.ConnectionString 关联。
【问题讨论】:
-
但是你问题中的代码没有给出那个错误?我手边没有访问数据库,但它不会出错,它运行时没有任何抱怨。如果我可以将测试代码放在评论中,它应该 -
function test { $global:c.x=4 }; $c=@{x=2}; $c; test; $c访问全局属性确实有效。 -
出于调试目的,我会尝试省略所有
Try_Catch结构。使用Try块的裸inner,然后使用return $false来查看可能的错误的完整说明。$global:conn是否按预期定义?$conn = …#main在 script 范围内定义。 OLEDB 提供商是否已注册? …
标签: powershell global-variables