카테고리 보관물: 개발

Android ROOM in 조건 변수 사용

개요

Android ROOM 사용 시 변수를 넘겨서 조건으로 사용하는 경우가 많습니다. 단순한 조건이나 개수가 많지 않은 경우 and 나 or 연산자로 충분합니다. 그러나 비교해야 하는 대상이 많아지게 되면 or 조건으로 나열하는 것이 쉽지 않습니다. 그래서 in 연산자로 대상을 나열해서 조건식으로 적용하게 됩니다. 이번글에서는 Andorid ROOM in 조건 변수 사용 방법을 알아보도록 하겠습니다.

전달변수

다음 코드와 같이 변수를 넘겨서 조건식에 들어가도록 합니다.

@Query("SELECT * FROM your_table where data_type = :dataType")
fun getYourData(dataType:String): YourClass

그러면 변수를 문자열 형태로 ‘A’, ‘B’, ‘C’ 이렇게 조합해서 전달하면 되지 않을까 생각할 수 있습니다.

@Query("SELECT * FROM your_table where data_type in (:dataTypeCondition)")
fun getYourData(dataTypeCondition:String): YourClass

그러면 최종적으로 다음과 같은 명령어로 해석된다고 예상할 수 있습니다.

SELECT * FROM your_table where data_seq in ('A', 'B', 'C')

그러나 이렇게 하면 원하는 결과가 나타나지 않습니다.

올바른 방법

변수를 하나의 문자열로 생각하지 않고 문자열 배열이나 ArrayList 형태로 전달해야 합니다. 아래코드에서는 ArrayList 형태로 전달했습니다. dataTypeCondition 변수에 원하는 조건을 다음과 같이 add 로 추가한 후 전달하면 됩니다.

dataTypeCondition.add("A")
dataTypeCondition.add("B")
dataTypeCondition.add("C")
@Query("SELECT * FROM your_table where data_type in (:dataTypeCondition)")
fun getYourData(dataTypeCondition:ArrayList<String>): YourClass

위와 같이 변수를 적용하면 in 조건이 적용된 결과가 반환됩니다.

C# 윈폼 프로그램 정보 입력 및 제목 표시(WinForm program information and display title)

개요

윈도우 기반으로 작성된 프로그램을 선택하고 마우스 오른쪽 버튼을 클릭하고 속성을 선택하면 자세한 정보를 볼 수 있습니다. 자세히 탭을 선택하면 다음과 같은 정보를 확인할 수 있습니다. 이 정보를 입력하는 방법과 이것을 이용해서 윈폼 프로그램의 이름과 버전 정보를 표시하는 방법을 알아보도록 하겠습니다.

실행파일의 자세히 탭
실행파일의 자세히 탭

어셈블리 정보 설정

비주얼 스튜디오로 윈폼 프로젝트를 열고 프로젝트 > [프로젝트명] 속성을 클릭합니다. 그러면 다음과 같은 화면이 나타납니다.

프로젝트 속성 화면
프로젝트 속성 화면

어셈블리 정보를 클릭하면 다음과 같은 화면이 나타나고 적절한 내용을 입력하면 됩니다.

어셈블리 정보 대화상자
어셈블리 정보 대화상자

빌드 후 파일정보를 확인해 보면 변경된 것을 알 수 있습니다.

변경된 속성 정보
변경된 속성 정보

코드내에서 활용

이 정보를 바탕으로 폼의 제목 표시줄에 제품 이름과 버전이 나타나도록 다음과 같이 코드를 작성합니다. 필요한 부분에 추가하시면 됩니다.

private void Form1_Load(object sender, EventArgs e)
{
    this.Text = Application.ProductName + " Ver " + Application.ProductVersion;
}

프로그램을 실행 해 보면 제목 표시줄이 입력한 정보로 나타나는 것을 확인할 수 있습니다.

입력된 어셈블리 정보에 따라 나타나는 제품명과 버전

프로그램을 변경하면서 버전 번호를 변경해 주면 쉽게 버전을 확인할 수 있습니다.