我正在试图制作一个bool,检查我们的数据库中是否存在param accountname。对于true和false,变量doesAccountExist总是返回-1,期望为1或0。
这不是一个特色,我读到人们在使用sprocs时遇到了问题。
如果我在pgadmin中运行SQLCommand,它可以工作。我看到一行是1还是0,取决于它是否存在。
我一直在使用管理员帐户来查看是否是我的只读帐户是问题,遗憾的是它不是。
string connectionString = "Server=localhost;Port=5432;Database=XXX;User Id=XXX;Password=XXX;";
NpgsqlConnection connection = new NpgsqlConnection(connectionString);
string commandString = "SELECT CASE WHEN EXISTS ( SELECT * FROM account WHERE username = '"+accountname+"') THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT) END";
NpgsqlCommand command = new NpgsqlCommand(commandString, connection);
try
{
connection.Open();
int doesAccountExist = command.ExecuteNonQuery();
connection.Close();
if (doesAccountExist == 1)
return true;
else
return false;
}
catch (Exception)
{
connection.Close();
return false;
}
编辑:
可能是解决方案。因为ozczecho启发我,ExecuteNonQuery()只返回UPDATE,DELETE和INSERT的行,我改为ExecuteScalar()并将对象转换为bool。
bool doesAccountExist = Convert.ToBoolean(command.ExecuteScalar());
这是一个解决方案,它有效,我会得到真或假的回报。