检查数据库中是否存在行

本文关键字:存在 是否 数据库 检查 | 更新日期: 2023-09-27 17:59:23

我有一个数据库,想检查是否已经存在特定的记录。

string sql = "SELECT COUNT(*) from tbl_student WHERE email = '" + mail + "' AND telephone= '" + telephone + "'";
NpgsqlCommand command = new NpgsqlCommand(sql, conn);
int userCount = (int)command.ExecuteScalar();
if (userCount > 0)
{
    lblMessage.Text = "Person already exists";
}

不工作的线路。错误消息表明这是一个无效的强制转换。我不知道,请帮帮我。

int userCount = (int)command.ExecuteScalar();

检查数据库中是否存在行

感谢大家的帮助。我尝试了你的许多建议,但都没有奏效。然后,我接受了huMpty-duMpty的建议,并将其存储到一个var变量中。然后我将var类型转换为int.

这是我现在的工作代码:

var result = command.ExecuteScalar();
int i = Convert.ToInt32(result);    
if (i == 0)
{
    lblMessage.Text = "Person does not exist";
}
else
{
    lblMessage.Text = "Person exists";
}

我怀疑问题在于它返回了long或类似的值。尝试使用:

int userCount = Convert.ToInt32(command.ExecuteScalar());

如果这不起作用:问问它是什么:

object val = command.ExecuteScalar()
Debug.WriteLine(val.GetType().FullName);

请尝试这段代码,

object s = sql.ExecuteScalar();
if (s != null)
{
    Console.WriteLine("Query returned value.");
}
else
{
    Console.WriteLine("Query returned nothing.");
}

command.ExecuteScalar();将返回结果集中第一行的第一列,如果结果集为空,则返回null引用。

它无法产生int值

像这个吗

if(command.ExecuteScalar() != null){
lblMessage.Text = "Person already exists";
}