检查数据库中是否存在行

时间:2014-04-22 09:39:10

标签: c# npgsql

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

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();

4 个答案:

答案 0 :(得分:2)

谢谢你们的帮助。我尝试了很多你的建议而且没有用。 然后我接受了huMpty duMpty建议并将其存储到var变量中。然后我将var类型转换为int。

Heres是我现在正在使用的代码:

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

答案 1 :(得分:1)

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

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

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

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

答案 2 :(得分:0)

请尝试这段代码,

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

答案 3 :(得分:-2)

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

它无法产生int值

这样做

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