如何在C#和Npgsql中使用不带双引号的PostgreSQL表名

时间:2018-12-13 13:01:17

标签: c# postgresql npgsql

我正在尝试使用Npgsql2库从PostgreSQL 10.5数据库中选择数据-我不能使用Npgsql3或Npgsql4,因为我需要支持Windows XP(最大.NET 4.0)。 我使用以下代码:

library(keras)
library(dplyr)
library(tibble)
library(tidyr)
library(stringr)

mnist <- keras::dataset_mnist()

mnist$test$x[sample(1:100,1), 1:28, 1:28] %>%
                as_data_frame() %>% 
                rownames_to_column(var = 'y') %>% 
                gather(x, val, V1:V28) %>%
                mutate(x = str_replace(x, 'V', '')) %>% 
                mutate(x = as.numeric(x),
                       y = as.numeric(y)) %>% 
                mutate(y = 28-y) %>%
                ggplot(aes(x, y))+
                geom_tile(aes(fill = val+1))+
                coord_fixed()+
                theme_void()+
                theme(legend.position="none")

如果我在查询中不对TableName或ColumnName使用双引号-它将失败并显示错误:

  

PostgreSQL错误:42P01:关系“ TableName”不存在

使用双引号可以正常工作。

那么可以使用不带双引号的Npgsql吗?是否有国旗或其他东西?

1 个答案:

答案 0 :(得分:2)

没有双引号,PostgreSQL将所有标识符折叠成小写。这是PostgreSQL的行为,与Npgsql没有关系-Npgsql只是在编写SQL时传递您的SQL。您可以切换到全小写的表名,在这种情况下,您不再需要使用引号。