关于c#:Npgsql异常 – 语法错误在附近

Npgsql Exception- syntax error at or near “”

我正在尝试执行postgresql查询(list),以获取使用npsql的数据库列表。

1
2
3
4
5
6
7
8
string postgresQuery = @"\list";
            ICollection<Schema> schemas = new List<Schema>();
            string ConnectionString =
"Host=xxx;Username=postgres;Password=admin;Database=test;";
            NpgsqlConnection conn = new NpgsqlConnection(ConnectionString);
            NpgsqlCommand cmd = new NpgsqlCommand(postgresQuery, conn);
            conn.Open();
   NpgsqlDataReader dataReader = cmd.ExecuteReader();

执行查询时遇到"语法错误在""处或附近"的问题。字符串包含双斜杠,如下(list)而不是单斜杠(list)。如果有什么解决办法,请告诉我。事先谢谢。


\list不是SQL查询。这是psql-tool的命令。

要使用SQL获取所有数据库的列表,请使用以下查询:

1
2
SELECT datname FROM pg_database
WHERE datistemplate = false;

检查如何使用psql列出所有数据库和表?

这里介绍了pg_database表的字段

数据库的所有者存储在引用pg_authid表的datdba字段中。可以找到用户拥有的所有数据库,如如何在PostgreSQL中列出RoleName拥有的数据库

1
2
3
4
SELECT datname
FROM pg_database
JOIN pg_authid ON pg_database.datdba = pg_authid.oid
WHERE rolname = 'username'

当然,查询应该参数化:

1
2
3
4
SELECT datname
FROM pg_database
JOIN pg_authid ON pg_database.datdba = pg_authid.oid
WHERE rolname = :username

这里介绍了pg_authid