我在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:找不到字段
在那条线上。
答案 0 :(得分:2)
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转义。