在c#中比较字符串和int(从查询获取)值的过程

时间:2014-05-12 16:35:43

标签: c# sql

我想自动生成类型为int的字段的值。下面是我的代码,当我在数据库中手动输入一列数据时,它可以成功运行。

但是当DB完全为空时,此查询的输出为“null”。我想当这个查询的输出为'null'时,createCode的值将为0(零)。

ConnectionObj.Open();
string query = "SELECT MAX(t_code) FROM teacher_table";
CommandObj.CommandText = query;
int createCode = Convert.ToInt32(CommandObj.ExecuteScalar());
if (createCode == 'null')  //can't compare string and int  
{
    createCode = 0;
    return createCode;
}
else
{
    return createCode;
} 

我怎么做?

4 个答案:

答案 0 :(得分:1)

在将其转换为int:

之前,您需要检查DBNull.Value
ConnectionObj.Open();
string query = "SELECT MAX(t_code) FROM teacher_table";
CommandObj.CommandText = query;
object code = CommandObj.ExecuteScalar();
if (code == DBNull.Value)
{
    return 0;
}

return Convert.ToInt32(code);

答案 1 :(得分:1)

在Mysql中,你可以像这样使用IFNULL()

string query = "SELECT IFNULL(MAX(t_code),0) FROM teacher_table";

在Sql Server中,您可以使用ISNULL(),如下所示:

  string query = "SELECT ISNULL(MAX(t_code),0) FROM teacher_table";

答案 2 :(得分:0)

if (createCode == 'null')更改为if (createCode == DBNull.Value)

答案 3 :(得分:0)

使用:

object obj = CommandObj.ExecuteScalar();
if (obj == null || obj == DBNull.Value)
    return 0;
else
    return Convert.ToInt32(obj);

由于createCode的类型为int,因此它永远不会为null,而是您当前的代码甚至不会编译。