我想自动生成类型为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;
}
我怎么做?
答案 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,而是您当前的代码甚至不会编译。