asp.net 에서 Null 이 데이터베이스 에서 읽 을 때의 작은 기술

그것 의 기능 은 매우 간단 하 다.즉,데이터베이스 에서 Name 로 된 필드 를 찾 은 다음 에 판단 하 는 것 이다.만약 에 그 값 이 비어 있다 면 number 의 값 은 1 을 추가 하 는 것 이다.예 를 들 어 검은색 을 추가 하 는 것 은 우리 가 주의해 야 할 것 이다
 
int number = 0;
string connstr = @"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\lando\Desktop\UML Extension\MyPratices\WebServices\App_Data\Database1.mdf;Integrated Security=True;User Instance=True";
using (SqlConnection conn = new SqlConnection(connstr))
{
conn.Open();
string str = "select * from Test";
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = str;
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
string name = dr["Name"].ToString();
DateTime dt = dr.GetDateTime(dr.GetOrdinal("InputDate"));
<STRONG>if (dr["Name"] == null) { number += 1; } </STRONG> }
}
}
if (number == 0)
Label1.Text = " Name null ";
else
Label1.Text = "Name :" + number;
그리고 제 데이터 에 있 는 데 이 터 를 보 세 요.
우리 의 Test 표 에는 세 개의 데이터 가 있 고 세 번 째 데이터 의 Name 필드 의 값 은 비어 있 습 니 다.처음에 저 는 당연히 Label 에서 출력 할 것 이 라 고 생각 합 니 다.Name 이 빈 값 의 개 수 는 1.많은 이야기 들 이 우리 에 게 자 유 롭 게 결론 을 내 리 는 것 이 잘못 되 기 쉽다 는 것 을 알려 주 었 습 니 다.예 를 들 어 내 가 지금 하고 있 는 이 결론.결 과 는 의외로 Null 이 Name 인 값 을 찾 지 못 했 습 니까?왜 그래?나 는 처음에 원인 이 어디 에 있 는 지 좌우 로 곰 곰 이 생각 했다.그리고 습관 적 으로 정지점 을 설치 하고 F5 를 시작 해서 디 버 깅 을 시작 합 니 다...위의 그림:
4.567916.보 셨 어 요?몰라 요.그 러 니까 데이터베이스 에 있 으 면(적어도 SQL 에 있 는 거 죠?Oacle 에서 나 는 아직 모른다)의 빈 값 은 사실 null 이 아니 라 표면 현상 으로 너 를 속 였 다.그러나,우 리 는 위의 캡 처 에서 그것 의 유형 을 볼 수 있 습 니 다:object{System.DWnull},우 리 는 여기에서 약간의 실 마 리 를 발견 할 수 있 습 니 다.네,유형 에서 손 을 댔 어 요.그리고 인터넷 에서 DBNull 지식 을 봤 어 요.구체 적 으로 볼 때 관 리 는 스스로 바 이 두 아래 에 있 을 수 있다.유형 적 인 문 제 를 알 게 되면 바로 OK 입 니 다.핵심 은 다음 과 같 습 니 다
 
if (dr["Name"] == DBNull.Value)
{
number += 1;
}
그러면 OK 입 니 다.그리고 정확하게 식별 할 수 있 습 니 다.또 다른 방법 이 있 습 니 다.사실은 차이 가 많 지 않 습 니 다.국 을 바 꾸 고 약 을 바 꾸 지 않 습 니 다
 
if (Convert.IsDBNull(dr["Name"]))
{
number += 1;
}
라 도 좋 습 니 다.

좋은 웹페이지 즐겨찾기