如何从 sql 算作 Npsql 中的值
How to Count from sql as a value in Npsql
我正在使用 Npgsql 访问 postgresql 数据库
我是运行一个查询:
int a = connection.Execute(@"SELECT count(*) FROM account AS a WHERE a.account_name = 'food'");
查询将 return 值 4,但我的 a
得到 -1.what 是这里的问题,我该如何解决?
2 个选项:
您的查询无法从数据库中检索数据,您需要通过分析数据库中的查询来检查它。
尝试使用 reader 而不是执行。
// Retrieve all rows
await using var cmd = new NpgsqlCommand(@"SELECT count(*)
FROM account AS a WHERE a.account_name = 'food'", conn);
await using var reader = await cmd.ExecuteReaderAsync();
while (await reader.ReadAsync())
{
var a=reader.GetString(0);
if(a==4){
//do something
}
}
看来您正在使用 Dapper。如果是这样,您需要 QueryFirst
而不是 Execute
,因为 Execute
只是 returns 行数
int a = connection.QueryFirst<int>(@"
SELECT count(*)
FROM account AS a
WHERE a.account_name = 'food'
");
我正在使用 Npgsql 访问 postgresql 数据库
我是运行一个查询:
int a = connection.Execute(@"SELECT count(*) FROM account AS a WHERE a.account_name = 'food'");
查询将 return 值 4,但我的 a
得到 -1.what 是这里的问题,我该如何解决?
2 个选项:
您的查询无法从数据库中检索数据,您需要通过分析数据库中的查询来检查它。
尝试使用 reader 而不是执行。
// Retrieve all rows await using var cmd = new NpgsqlCommand(@"SELECT count(*) FROM account AS a WHERE a.account_name = 'food'", conn); await using var reader = await cmd.ExecuteReaderAsync(); while (await reader.ReadAsync()) { var a=reader.GetString(0); if(a==4){ //do something } }
看来您正在使用 Dapper。如果是这样,您需要 QueryFirst
而不是 Execute
,因为 Execute
只是 returns 行数
int a = connection.QueryFirst<int>(@"
SELECT count(*)
FROM account AS a
WHERE a.account_name = 'food'
");