如何导入npgsql模块?

2024-01-12

我需要从 PowerShell 脚本中连接到 PostgreSQL 数据库。但是如何在没有 VisualStudio 的情况下安装 npgsql 呢?没有金块!

所以我尝试使用最新的 MSI 文件在 GAC 中安装驱动程序(Npgsql-3.0.5.msi).

Using gacutil.exe显示它已安装:

Npgsql,版本=3.0.5.0,文化=中性,PublicKeyToken=5d8b90d52f46fda7,处理器架构=MSIL

但PowerShell对此一无所知!Get-Module -ListAvailable应该显示它但是:

PS C:\WINDOWS\system32> (gmo -l n*).Name

NetAdapter  
NetConnection  
NetEventPacketCapture  
NetLbfo  
NetNat  
NetQos  
NetSecurity  
NetSwitchTeam  
NetTCPIP  
NetWNV  
NetworkConnectivityStatus  
NetworkLoadBalancingClusters  
NetworkTransition  
NFS  
PS C:\WINDOWS\system32> _

没有模块Npgsql!

我正在寻找Npgsql.dll它就在那里:

PS  C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Npgsql\v4.0_3.0.5.0__5d8b90d52f46fda7> dir

Verzeichnis: C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Npgsql\v4.0_3.0.5.0__5d8b90d52f46fda7


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        08.01.2016     08:10     446464 Npgsql.dll


PS C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Npgsql\v4.0_3.0.5.0__5d8b90d52f46fda7> _

由于无法识别模块npgsql我的 PowerShell 代码不起作用:

function getDBConnection ($MyDBServer, $MyDBPort, $MyDatabase, $MyUid, $MyPwd) {
  $DBConnectionString = "Provider=PostgreSQL OLE DB Provider;Data Source=$MyDBServer;location=$MyDatabase;User ID=$MyUid;password=$MyPwd;timeout=1000;"
  $DBConn = New-Object System.Data.OleDb.OleDbConnection;
  $DBConn.ConnectionString = $DBConnectionString
  try {
    $DBConn.Open
  } catch {
    "Failed to connect! Error: "+ $_.Exception.Message
  }

  return $DBConn
}

function closeDBConnection ($DBConn) {
  $DBConn.Close
}

$query = "select * from test_table1"
$MyDBConnection = getDBConnection "dbserver" 5432 "databasename" "user" "pass"

try {
  $cmd = New-Object System.Data.OleDb.OleDbCommand($query, $MyDBConnection)
} catch {
  "Failed to create command object! Error: " + $_.Exception.Message
}
...

The $DBConn.Open不是失败,而是财产ConnectionState遗迹Closed之后Open call.

创建一个实例OleDbCommand崩溃并显示德语错误消息:

创建命令对象失败!错误:对于“OleDbCommand”,并且其参数可以是以下内容:“2”。

这意味着不存在带有两个参数的重载方法。

问题:

  • 我需要安装/配置什么才能Npgsql在 PowerShell 中可见?
  • 如何加载/导入NpgsqlPowerShell 脚本或模块中的模块?

好的,解决了!这里是解决方案:

使用 Windows 8.1 和多个 .NET 版本(最高版本 4.5),我们可以使用 Npgsql 3.0.5。

  1. 从 npgsql 网站下载 Npgsql-3.0.5.msi 并运行安装程序
  2. 搜索名为“Npgsql.ll”的 DLL
  3. 将此 dll 复制到本地项目目录(其中包含 powershell 脚本)
  4. 在脚本中使用 Add-Type -Path ".\Npgsql.dll" 加载 DLL
  5. 现在您已经准备好出发了!

这里有一些示例代码,我连接到在远程 CentOS 服务器上运行的 PostgreSQL 服务器:

Add-Type -Path ".\Npgsql.dll"

function getDBConnection ($MyDBServer, $MyDBPort, $MyDatabase, $MyUid, $MyPwd) {
$DBConnectionString = "server=$MyDBServer;port=$MyDBPort;user id=$MyUid;password=$MyPwd;database=$MyDatabase;pooling=false"
$DBConn = New-Object Npgsql.NpgsqlConnection;
$DBConn.ConnectionString = $DBConnectionString
$DBConn.Open()

return $DBConn
}

function closeDBConnection ($DBConn)
{
    $DBConn.Close
}

$MyDBConnection = getDBConnection "db.mydomain.com" 5432 "databasename" "username" "password"
$query = "SELECT * FROM test_table1;"
$DBCmd = $MyDBConnection.CreateCommand()
$DBCmd.CommandText = $query
$adapter = New-Object -TypeName Npgsql.NpgsqlDataAdapter $DBCmd
$dataset = New-Object -TypeName System.Data.DataSet
$adapter.Fill($dataset)
$dataset.Tables[0]
closeDBConnection($MyDBConnection)
.....

npgsql 似乎与 System.Data.OleDb 兼容。所以technet.microsoft.com上的OleDb文档可以作为参考。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何导入npgsql模块? 的相关文章

随机推荐

  • 列表作为字典的键

    我有多个元组列表 例如 1 2 3 4 2 5 6 7 3 我希望将其作为字典的键 因此字典中的每个键都是元组列表 不幸的是 根据TypeError我越来越 unhashable type list 看来python不喜欢哈希列表 我的元组
  • VBScript DateDiff 月份

    我在获取两个日期之间的月份日期差异时遇到问题 这是一个示例 DateDiff m 2014 10 17 2014 10 30 上面的代码返回 0 个月 因为它还不到一个月 但 DateDiff m 2014 10 17 2014 11 01
  • MongoDB C# 使用 Guid 更新插入

    当尝试在 Mongo 中执行 upsert 操作时 我希望它生成 ID 的 GUID 而不是对象 ID 在本例中 我正在检查以确保具有特定属性的对象尚不存在 并且如果发生更新 实际上会引发异常 这是类定义的存根 public class E
  • 我是否需要同步 invokeAll 调用的结果?

    我正在增强现有的算法 该算法由多个独立步骤组成 以使用并发任务 每个任务都会创建多个对象来保存其结果 最后 我想要一个从控制方法返回的所有结果的列表 目前 我的代码看起来像这样 private final ExecutorService p
  • iOS 上的 Chrome 中未触发 .click 事件

    当用户单击移动设备上的菜单栏时 我使用以下代码在我的网站上显示下拉菜单 mobile menu click function nav toggleClass open mobile menu toggleClass open 它在桌面浏览器
  • 使用正则表达式解析有效的父目录

    给定字符串a b c d它代表一个完全限定的子目录我想为父树上的每个步骤生成一系列字符串 即a b c a b and a 使用正则表达式我可以做一个非贪婪的 这会给我匹配的a b and c或贪婪的 这会给我一场比赛a b c 有没有办法
  • 我可以随我的应用程序一起分发 JDK 吗?

    我正在开发一个名为妖娆 http enchanting robotclub ab ca 该应用程序基于Scratch http scratch mit edu 发出 Java 源代码并对其进行编译 以便上传到 LEGO Mindstorms
  • 用于生产时 Sklearn MultiLabelBinarizer() 错误

    编辑 我已更改代码 从 mlb 更改为 TfIdfVectorizer 我仍然面临一个问题 请看下面我的代码 from sklearn externals import joblib from sklearn preprocessing i
  • 配置 Gradle 以将主类和测试类包含到我的 .jar 存档中

    如何配置 Gradle 以将主类和测试类包含到我的 jar 存档中 目前构建的 jar构建 库目录缺少我的测试类 它仅包括来自以下来源的类项目根目录 src main java com packageGradle 将它们编译成后的 jar
  • 如何在应用程序未运行时模拟位置

    我正在构建一个具有地理围栏功能的 iOS 8 应用程序 我需要对此进行测试 并且我知道我可以使用预配置的位置或提供 GPX 文件来模拟 Xcode 中的位置 然而 由于这个应用程序需要在被杀死时根据区域监控进行操作 用户在多任务处理中向上滑
  • 如何使用自定义工厂方法注册开放泛型?

    TL DR 我可以用 Autofac 创建一个通用工厂 以便我可以注入IProduct
  • 将列表列转换为数据框

    我在 Spark 数据框中有一列列表 features 0 45 63 0 0 0 0 0 0 0 85 0 69 0 0 89 56 0 0 0 0 如何将其转换为 Spark 数据框 其中列表中的每个元素都是数据框中的一列 我们可以假设
  • 分析网络软件/具有大量系统调用等待的分析软件

    我正在开发一个复杂的网络软件 但我无法确定如何提高系统性能 特别是在使用阻塞同步调用的软件部分 由于系统的这一部分正在进行大量计算 因此几乎不可能确定该组件的缓慢是由这些计算引起的还是由于等待系统的其他部分引起的 是否有任何轻量级分析器可以
  • 在模式推断解析 json 中检测到格式错误的记录

    我在尝试使用 ADF 中的数据集解析从 Blob 存储读取的基本 Json 时遇到一个非常令人沮丧的错误 我的 Json 如下 Bid 0 197514880839 BaseCurrency AED Bid 0 535403560434 B
  • 使用两个下拉按钮构建一个散点图,一个用于 x 轴,一个用于 y 轴

    我希望构建一个散点图 但使用 2 个下拉列表 我可以在一个用于 x 轴的变量和另一个用于 y 轴的变量之间切换 例如总测试和总案例 或最近案例和总案例 我尝试构建一个我通过替换找到的解决方案 cols dd Total tests Tota
  • SQLAlchemy 声明式:没有任何主键的表?

    如何使用ORM声明类创建没有主键的表 如果我没有制作任何专栏 它就无法启动primary key True SQLAlchemy 核心不会抱怨缺少主键 因此可以使用以下命令创建这样的表Table 但是ORM在设计上需要一种方法来识别对象对应
  • setColorFilter 不起作用

    我正在尝试在图像视图上实现一个简单的滤色器 将黑色图像变成白色图像 为了实现这一目标 我执行以下操作 weatherImg setColorFilter Color BLACK PorterDuff Mode MULTIPLY weathe
  • 异常类 - What() 函数

    我目前正在开发自己的异常类 该类继承自std exception 我不确定我是否应该自己做what 或者只是打电话std exception message 在我的类构造函数中 这是我当前的代码 FilterException Filter
  • 如何设置字体大小或标签大小以适合所有设备

    如何设置 kivy 字体大小或标签大小 使其适合所有手机设备屏幕 适合的方式是不与边界 矩形 甚至屏幕重叠 我知道 Kivy 中的按钮和其他一些小部件有size hint This size hint没有给出想要的结果 另外 设置font
  • 如何导入npgsql模块?

    我需要从 PowerShell 脚本中连接到 PostgreSQL 数据库 但是如何在没有 VisualStudio 的情况下安装 npgsql 呢 没有金块 所以我尝试使用最新的 MSI 文件在 GAC 中安装驱动程序 Npgsql 3