C#의 DBNULL 설명

黄舟
풀어 주다: 2017-10-05 15:30:37
원래의
2044명이 탐색했습니다.

1 개요

다음 예에서 무엇이 잘못되었다고 생각하시나요? 문제를 빠르게 찾아 해결하실 수 있다면 이 글은 건너뛰셔도 됩니다. 감사합니다~~.

1 List<Base_Employee> ltPI = new List<Base_Employee>();
2 DataTable dt = GetBase_UserInfoToDataTable();
3 for (int i = 0; i < dt.Rows.Count; i++)
4    {
5          Base_Employee base_Employee= new Base_Employee();
6          base_Employee.EmployeeId= dt.Rows[i]["EmployeeId"].ToString();//EmployeeId为string类型
7          base_Employee.Age =(int)dt.Rows[i]["Age"];//Age为int类型
8          base_Employee.GraduationDate = (DateTime)dt.Rows[i]["GraduationDate"];//GraduationDate 为DateTime类型
9    }
로그인 후 복사

생각해 보세요. 잘 모르겠으면 아래 사진에 표시된 부분이 문제입니다.

좋습니다. 이 글은 이 문제를 해결하기 위한 것입니다. 그게 바로 제가 다음에 알려드릴 System.DBNULL 타입

2 콘텐츠 공유

2.1 .NET에서는 흔히 사용되는 기본 데이터 타입

int, string, char 등이 익숙합니다. 모두에게 기본 데이터 유형이지만 대부분의 사람들은 System.DBNull에 익숙하지 않을 것입니다. 그러나 위의 문제를 해결하는 것은 큰 아이디어입니다.

2.2 SqlServer

varchar, nvarchar, int, bit,decimal,datetime 등의 일반적인 데이터 유형은 기본적으로 .net의 데이터 유형과 일대일로 대응됩니다(varchar 및 nvarchar는 모두 . net string형)

2.3 SqlServer

.net에서 변수를 정의할 때 변수에 초기값을 할당하지 않으면 시스템은 기본적으로 int와 같은 초기 값 유형의 기본값은 0이고 문자열 유형의 기본값은 string.Empty입니다. 일반적으로 다양한 유형의 기본 초기 값은 다르지만 SqlServer에서는 거의 모든 변수 유형의 초기 값이 있습니다. NULL입니다. 이는 사용자 정의 값이거나 시스템 기본값 NUL을 의미합니다. 이것이 문제의 핵심입니다. int 유형을 예로 들면, 데이터베이스에서 INT에 값을 할당하지 않으면 기본값은 NULL입니다. 이 값이 .net의 정수 변수에 할당되면 예외가 발생합니다. 던져질 것이다.

2.4 System.DBNull이란 무엇입니까?

DBNull은 Object를 상속하는 클래스이며 해당 인스턴스는 데이터의 NULL 값에 해당하는 DBNull.Value입니다.

2.5 DBNull이 다른 데이터 유형을 나타낼 수 있는 이유는 무엇입니까?

데이터베이스에서는 데이터가 객체에 저장됩니다.

2.6 위 문제 해결 방법

조건 판단 추가

문자열 유형이 비어 있는지, DBNull이 NULL인지 여부를 판단할 수 있습니다


 1 List<Base_Employee> ltPI = new List<Base_Employee>(); 
 2 DataTable dt = GetBase_UserInfoToDataTable(); 
 3 for (int i = 0; i < dt.Rows.Count; i++) 
 4    { 
 5          Base_Employee base_Employee= new Base_Employee(); 
 6          base_Employee.EmployeeId= dt.Rows[i]["EmployeeId"].ToString();//EmployeeId为string类型 
 7          //base_Employee.Age =(int)dt.Rows[i]["Age"];//Age为int类型 
 8           if (dt.Rows[i]["Age"]!=System.DBNull.Value) 
 9                 {
 10                     base_Employee.Age = int.Parse(dt.Rows[i]["Age"].ToString());
 11                     //base_Employee.Age = (int)dt.Rows[i]["Age"];//拆箱
 12                     //base_Employee.Age =Convert.ToInt16( dt.Rows[i]["Age"]);
 13                 }
 14          //base_Employee.GraduationDate = (DateTime)dt.Rows[i]["GraduationDate"];//GraduationDate 为DateTime类型
 15         if (dt.Rows[i]["GraduationDate"].ToString()!="")
 16                 {
 17                     base_Employee.GraduationDate = Convert.ToDateTime(dt.Rows[i]["GraduationDate"]);
 18                     base_Employee.GraduationDate = (DateTime)dt.Rows[i]["GraduationDate"];
 19                 }
 20    }
로그인 후 복사

위 내용은 C#의 DBNULL 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿