我有一个数据库,想检查特定记录是否已经存在。
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();
答案 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";
}