본문 바로가기

전체 글

System.ArgumentNullException: '값은 null일 수 없습니다. 문제 해결 C# 프로그래밍을 하다 제목과 같은 황당한 오류를 맞이할 때가 있습니다. 컴파일 타임에는 발견되지 않았던 문제인데 런타임시 "오류메시지는 대부분 어떤페이지 몇째줄, 어떤 클래스 몇째줄에서 이런 오류가 있어요~" 라고 친절하게 알려주지만 이 오류는 Stack Trace를 아무리 유심히 봐도 어디에서 오류가 났다는 건지 단서가 없습니다. 이런 오류는 실제 운영환경에서는 발생하지 않기도 합니다. 개발환경에서 주로 일어나죠. 소스코드에 문제가 있는건지 의심되는 부분을 아무리 수정해 봐도 해결되지 않았습니다. System.ArgumentNullException: '값은 null일 수 없습니다. 매개 변수 이름: key' Value cannot be null. Parameter name: key Descriptio.. 더보기
C# 세션 삭제하기 C# 웹프로그램에서 세션을 완전히 삭제하려면 다음의 세 줄을 코딩하셔야 합니다. 1. 페이지에서 세션삭제 처리시 Session.Clear(); //세션에 저장된 값 삭제 Session.Abandon(); //세션 컬렉션을 삭제 Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", "")); //세션에 사용했던 쿠키삭제 2. 클래스에서 세션삭제 처리시 (HttpContext.Current를 붙여주세요) HttpContext.Current.Session.Clear(); HttpContext.Current.Session.Abandon(); HttpContext.Current.Response.Cookies.Add(new HttpCookie("ASP.NET_Sess.. 더보기
MSSQL 버전확인 SQL Server버전확인 쿼리는 다음과 같습니다. SELECT @@VERSION AS 'SQL Server Version'; 함수 등 서버 버전에 따라 지원여부 확인을 위해 필요합니다. 프로젝트의 성공을 기원합니다. 더보기
런타임이란? 컴파일타임 과의 차이는? 런타임(Runtime)과 컴파일타임(Compiletime)의 차이점은 무엇인가? 런타임과 컴파일타임에 대해 가장 쉽게 설명한 글이 있어 번역해 보았습니다. 원문보기 런타임(Runtime)과 컴파일타임(Compiletime)은 소프트웨어 프로그램개발의 서로 다른 두 계층의 차이를 설명하기 위한 용어이다. 프로그램을 생성하기 위해 개발자는 첫째로 소스코드를 작성하고 컴파일이라는 과정을 통해 기계어코드로 변환 되어 실행 가능한 프로그램이 되며, 이러한 편집 과정을 컴파일타임(Compiletime) 이라고 부른다. 컴파일과정을 마친 프로그램은 사용자에 의해 실행되어 지며, 이러한 응용프로그램이 동작되어지는 때를 런타임(Runtime)이라고 부른다. "런타임"과 "컴파일 타임"이라는 용어는 종종 서로다른 두 가지.. 더보기
C# dynamic 사용 이유 Dynamic형식의 사용 Microsoft Docs에서 그 의미를 찾아보면 다음과 같습니다. 이 형식은 정적 형식이지만 dynamic 형식의 개체가 정적 형식 검사를 건너뜁니다. 대부분의 경우 이 형식은 object 형식을 가지고 있는 것처럼 작동합니다. 컴파일 시간에 dynamic 형식의 요소는 모든 연산을 지원하는 것으로 간주됩니다. 따라서 개체가 값을 COM API, IronPython 같은 동적 언어, HTML DOM(문서 개체 모델), 리플렉션 또는 프로그램의 다른 곳 등 어디서 가져오든 신경을 쓸 필요가 없습니다. 그러나 코드가 유효하지 않으면 런타임 시 오류가 catch됩니다. MS Docs 보기 번역기를 통한 문장이어서 인지 의미가 아리송합니다. @.@ 위의 설명을 이해하려면 먼저 알아야 .. 더보기
C# SMTP 메일발송, 옵션에 대한 설명 C#에서 SMTP 메일 보내기 이번 글에서는 C#에서 SMTP 메일 보내기입니다. 먼저 최종적인 코드는 다음과 같습니다. 아래 코드에서 부가적인 기능은 메일 발송시 메일참조 추가하기, 파일 첨부하기 등입니다. using System.Net.Mail; using System.Text; void MailSetting() { MailMessage message = new MailMessage(); message.To.Add("receiver@gmail.com"); message.From = new MailAddress("sender@gmail.com", "홍길동", System.Text.Encoding.UTF8); MailAddress bcc = new MailAddress("bcc@gmail.com");//.. 더보기
MSSQL 초간단 팁들 MS-SQL 쿼리작성시 정말 간단한 팁들 datetime 타입 필드를 varchar(10)와 비교하기 Sales라는 테이블에 WriteDate 필드가 datetime형식일 때 varhcar(10)형식의 날짜와 비교를 어떻게 하는가? DECLARE @DateFrom varchar(10) SET @DateFrom = '2019-02-02' DECLARE @DateTo varchar(10) SET @DateTo = '2019-02-02' SELECT * FROM Sales WHERE WriteDate @DateFrom AND @DateTo +' 23:59:59.999' 더보기
MSSQL 그룹별 최상위 데이터 가져오기 그룹별 최상위 데이터 가져오기 MSSQL에서 그룹별 최상위 데이터를 가져오는 방법은 JOIN을 이용한 방법, 서브쿼리를 이용한 방법 등 여러가지를 생각해볼 수 있겠습니다만, 여기서는 제가 가장 간단하고 이해하기 쉽다고 생각하는 순위함수와 OVER절을 이용한 방법에 대해 설명하겠습니다. 학습에 이용할 테이블과 데이터는 다음과 같습니다. SELECT Name, Month, SellCount FROM MonthlySales 테이블 전체 데이터 조회결과 최종목표/결과쿼리먼저 최종적인 쿼리를 보여드리고 단계적으로 설명하도록 하겠습니다. 위의 테이블 데이터에서 각 과일명 별로 판매량이 제일 많은 달의 로우만 가져오는 쿼리입니다.SELECT * FROM ( SELECT Name , Month , SellCount ,.. 더보기
C#코딩시 정말 간단한 팁을 소개합니다. C# 코딩시 정말 간단한 팁들 string[] 을 string 으로 컨버팅하기 string weekdays = "월,화,수,목,금,토,일"; // ,로 연결된 문자열이 있습니다. string[] arrWeekdays = weekdays.Split(','); //배열로 만듭니다. string weekdays2 = String.Join(",", arrWeekdays); //배열을 다시 ,로 연결된 문자열로 만듭니다. .aspx 파일에서 네임스페이스 정의하기 DataTable 복사, .Clone()과 .Copy의 비교 DataTable.Clone()은 데이터테이블 스키마만 복사 DataTable.Copy()는 데이터테이블 스키마 및 데이터 복사 PreparedStatement 방식 쿼리에서 Null값을 넣을때.. 더보기
트리구조(Tree Structure)란? 트리구조란?(Tree Structure) 각 요소가 바로 아래에 있는 하나 이상의 요소에 연결되는 데이터 구조 유형입니다.1개 이상의 노드를 갖는 노드들의 집합요소 간의 연결을 말하며, 데이터 구조에서 다루는 트리는 일반적으로 꼭대기에 뿌리가 그려져 있으므로 거꾸로 된 트리 라고도 합니다. 소프트웨어 개발을 하면서 자연스레 공부하게 되는 데이터에는 큐(Queue), 버퍼(Buffer), 트리(Tree)등이 있습니다. 큐나 버퍼는 주로 메모리 상에서 관리되는 자료구조의 개념이기 때문에 어렵기도 하고 잘 모르지만, 트리구조는 사용자에게 보여지는 용도로도 많이 쓰이는 개념이어서 사용하는 경우가 많습니다. 그런 만큼 공부가 필요하겠죠?트리구조는 우리 주위에서 쉽게 접할수 있습니다. 예를 들자면 월드컵 토너먼트 .. 더보기