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

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


var builder = new NpgsqlConnectionStringBuilder();

//setting connection string variables here

var connection = new NpgsqlConnection(builder.Tostring());

var query = "SELECT * FROM \"TableName\" ORDER BY \"ColumnName\"";

var adapter = new NpgsqlDataAdapter(query, connection);

var dataSet = new DataSet();


connection.Open();

adapter.Fill(dataSet);

如果我在查询中未对 TableName 或 ColumnName 使用双引号 - 它会失败并出现错误:


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


使用双引号它可以工作。


那么是否可以使用不带双引号的 Npgsql 呢?有没有什么flag之类的?


守候你守候我
浏览 259回答 1
1回答

函数式编程

如果没有双引号,PostgreSQL 会将所有标识符折叠为小写。这是 PostgreSQL 的行为,与 Npgsql 无关 - 后者只是在您编写 SQL 时传递您的 SQL。您可以切换到全小写的表名,在这种情况下您不再需要引号。
打开App,查看更多内容
随时随地看视频慕课网APP