问题标签 [npgsql]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
18494 浏览

sql - 如何使用 Postgres/NpgSQL 动态查询列名

我有一个过滤器对象来查询一个包含许多列的表,而不是像这样编写一个覆盖所有列的条件(允许可选过滤):

对于每一列。相反,理想情况下,我希望能够将字段名称作为参数传递:

这是不可能的,因为在解析时需要列(类似于此处给出的答案)。

你如何克服这一点?- 我真的不想在添加或删除新列时维护 SQL(就像在我的第一个示例中那样),我认为直接将列名构造到命令字符串中会很危险因为这可能允许 sql 注入。

请注意,此代码位于 Web 服务后面。

0 投票
1 回答
1267 浏览

c# - 带有 c# 的 postgres npgsql - 尝试将特殊字符写入 ascii 编码的数据库

我正在使用开源库 npgsql http://pgfoundry.org/projects/npgsql/来操作postgres 数据库上的第三方数据。数据库编码为 SQL_ASCII。

如果我使用标准的 c# 字符串运行查询,例如

插入城市(城市名称)值(“科隆”)

显示在数据库中的值看起来更像:пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ

例如炒。我花了很多时间尝试使用不同的字符串编码等但没有成功

0 投票
5 回答
16600 浏览

c# - 如何将参数传递给 sql 'in' 语句?

我想创建这个查询:

但我找不到任何使用 Npgsql 和 NpgsqlParameter 实现此目标的示例。我试过这样:

但它没有用;)

0 投票
1 回答
455 浏览

unit-testing - NHibernate / Npgsql 在调试 UnitTest 时在 CreateSchema 期间抛出异常

我有两个 C# 项目,Model 和 ModelTest。模型由 ActiveRecord 对象(围绕 Hibernate 的包装器)组成。在 ModelTest 我创建了一个简单的单元测试:

Model.Init() 使用 ActiveRecord 注册所有类型的装配模型。Model.CreateSchema() 包装了 ActiveRecordStarter.CreateSchema(),它调用 NHibernate 的 CreateSchema()。

如果我运行单元测试,此代码工作正常,但如果我“调试”单元测试,它会失败。在调试模式下,CreateSchema() 发生异常:

在 SQL 调用“drop table user cascade”期间似乎引发了异常,如果在运行测试之前数据库为空,则显然会失败。我假设总是在创建新表之前发送 drop。

关于删除查询的结果,Npgsql 在调试模式下的行为是否不同?

0 投票
3 回答
1663 浏览

c# - Npgsql 查询中的数据类型问题

我正在尝试在带有日期列的 PostgreSQL 表中插入一行。在 UI 上,我有一个 DateTimePicker,用户可以在其中选择正确的日期。到目前为止,我得到了这个:

在用户界面上:

关于插入行的方法:

它抛出这个异常:

obj.date 值为 2011-04-29。尝试在周围加上单引号,但它也失败了。

数据库列类型是日期。

以前有人做过吗?有任何想法吗?

我检查了这个链接搜索并回答,但它没有帮助。谢谢

0 投票
2 回答
1296 浏览

postgresql - Postgres 和 Npgsql 的并行性或 PLINQ

我有一个超过 12,000,000 行的 Posrgres 9.04 数据库表。

我需要一个程序来读取每一行,进行一些计算和查找(针对第二个表),然后在第三个表中写入一个带有这些计算结果的新行。完成后,第三张表的行数将与第一张表相同。

在 Core i7 720QM 处理器上串行执行需要超过 24 小时。它只对我的 8 个内核中的一个(4 个物理内核,但 8 个通过 HTT 对 Windows 7 可见)征税。

我想通过并行性来加快速度。我以为我可以使用 PLINQ 和 Npgsql:

但是,我收到一个错误records.AsParallel()找不到源类型“System.Linq.ParallelQuery”的查询模式的实现。未找到“选择”。考虑明确指定范围变量“行”的类型。

我已经做了很多谷歌搜索,我只是变得更加困惑。NpgsqlDataReader继承自System.Data.Common.DbDataReader,后者又实现了IEnumerable,它具有AsParallel扩展名,所以似乎有合适的东西来让它工作?

我不清楚我什至可以做什么来明确指定范围变量的类型。似乎最好的做法是指定这一点。

我愿意切换到 DataSet,假设它与 PLINQ 兼容,但如果可能的话,我宁愿避免,因为有 12,000,000 行。

这甚至可以通过 Npgsql 实现吗?我需要改用 Devart 的 dotConnect for PostgreSQL 吗?

更新:刚刚找到http://social.msdn.microsoft.com/Forums/en-US/parallelextensions/thread/2f5ce226-c500-4899-a923-99285ace42ae,这让我尝试了这个:

到目前为止,IDE 中没有错误,但这是构建它的正确方法吗?

0 投票
3 回答
5812 浏览

c# - 如何从 postgresql 数据库中获取图片

我想选择一张在 postgresql 数据库中保存为大对象的图片。

我知道我使用 lo_export 来做到这一点。

但有一个问题:我想将这张图片直接保存到我的电脑,因为我无法使用 lo_export 访问保存在服务器上的文件

(我认为如果通过选择查询将图片传输到我的计算机,这对我来说是最好的)

0 投票
5 回答
8102 浏览

c# - 如何从 NpgsqlDataReader 获取行数

在使用 select 语句后,我试图从 NpgsqlDataReader 获取行数。我试图检查的原因是在处理数据之前查看它是否有任何数据、单行或是否有多行。任何帮助将不胜感激。

这是在 C# .NET 4 中完成的

0 投票
2 回答
1194 浏览

c# - ConcurrentQueue 上的 PLINQ 不是多线程

我在 C# 程序中有以下 PLINQ 语句:

两者都是ConcurrentQueuesarrestQueue_writeQueue

没有并行运行:

  • 运行时,总 CPU 使用率约为 30%,这也是所有其他运行的情况。我有 8 个内核(具有 4 个物理内核的 Core i7 720QM 上的超线程),8 个内核中有 4 个几乎没有任何利用率。其余的运行大约 40%-50%。
  • 磁盘使用率通常为 0%,除了查询本地主机上的 Postgres 数据库外,没有网络使用情况(见下文)。
  • 如果我在内部某处添加断点geocodeThis.Geocode(),Visual Studio 的Thread下拉列表只会显示[ pid ] Main Thread。它永远不会进入任何其他线程。
  • 我正在使用Npgsql连接到 Postgres,并且每个线程对一个表运行一些SELECT查询。我正在运行 pgAdmin III 的服务器状态应用程序,它显示pg_stat_activity。通过监控这一点,以及战略断点放置(见上文),我可以看到应用程序永远不会为所有假定的并发线程打开超过 1 个数据库连接geocodeThis.Geocode()。即使我将Pooling=false添加到数据库连接字符串中,以强制连接不被池化,我也从未看到超过 1 个连接在geocodeThis.Geocode().
  • Postgres 表在WHERE子句中的每一列上都有索引。即使它的索引很差,我也希望有大量的磁盘使用。如果 Postgres 以任何其他方式支撑事情,似乎它会吸收核心。

这似乎是一个简单的 PLINQ 案例研究,我正在为为什么没有并行运行而摸不着头脑。

0 投票
3 回答
2369 浏览

asp.net - 带有 PostgreSQL 的 ASP.NET 中的登录控制

我有一个 ASP.NET 项目和 PostgreSQL 数据库。在我的数据库中,我有一个名为的表user,并且该表具有属性:passwordnick.

我想在我的 ASP.NET 项目中使用 Login 组件,但我不知道如何为我自己的数据库配置它。在项目中,我使用了一个空的 ASP.NET 网页。对于我使用的连接ODBCNpgSQL

也许我必须使用会员资格...我如何将它与 postgreSQL 一起使用 ????

非常感谢。