2014-05-12 3 views
-2

필드의 값을 자동으로 생성하려면 int 인 필드 값을 생성하고 싶습니다. 아래는 내 코드이며 데이터베이스에 수동으로 한 열 데이터를 입력하면 성공적으로 작동합니다.C에서 sting과 int (get from query) 값을 비교하는 과정

그러나 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

오류가 무엇이 잘못되었는지를 말하고있다. 'createCode'는'int' 타입이고'null '과 비교하려고합니다 – Habib

+0

가능한 [데이터베이스에서 nullable을 얻는 방법] (http://stackoverflow.com/questions/9503698/). –

+0

제 질문을 다시 읽어주십시오. 나는 당신이 내 문제를 이해하지 못한다고 생각합니다. @Habib – Ikr

답변

1

당신은 int로 캐스팅하기 전에 DBNull.Value를 확인하기 위해 필요 코드는 컴파일되지 않습니다.

+0

감사합니다. 그 작업 :) @ 대니 – Ikr

0

변경 if (createCode == 'null')에서 if (createCode == 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); 
0

사용 : 당신의 createCode 이후

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

유형 int이다

, 그것은 null이 될 수 없다, 대신 현재

1

MySQL의에서이 같은 IFNULL()를 사용할 수 있습니다

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

는 SQL 서버에서이 같은 ISNULL()를 사용할 수 있습니다

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