我在 C# 中有以下代码行作为我的查询:
cmd.CommandText = "SELECT *
FROM product
LEFT JOIN category ON product.category_id = category.id
WHERE product.id = @productId";
product
表有一个名为 name
的列,我需要它。
这是我在应用程序中用来检索它的行。
product.ProductName = reader.GetString(reader.GetOrdinal(""product"."name""));
我得到的错误是
System.IndexOutOfRangeException: 找不到字段
在那条线上。
reader.GetOrdinal("name");
首先,结果集没有一个名为 "product"."name"
的字段,而是一个名为 "name"
的字段。考虑一下,如果你要尝试在PostgreSQL中从该结果集中选择,情况是一样的:
SELECT "product"."name" FROM
(SELECT *
FROM product
LEFT JOIN category ON product.category_id = category.id
WHERE product.id = @productId) subquery
不起作用,但是:
SELECT "name" FROM
(SELECT *
FROM product
LEFT JOIN category ON product.category_id = category.id
WHERE product.id = @productId) subquery
确实如此。
其次,不要在字段名称上使用 PostgreSQL 转义。