동적 쿼리란?

 

일반적으로 조회문을 보면

 

SELECT * FROM TABLE 형식으로 다들 조회를 한다.

 

하나 더 넣어보자.

 

SELECT * FROM TABLE WHERE COLUMN = @COLUMN_DATA

 

이렇게 쓴다면 단순히 어떤 대상을 찾아 그 내용을 가져 온다.

 

하지만 이것은 동적 쿼리가 아니다.

 

단순히 원하는 결과를 정적인 형태로 가져온다.

 

하지만

 

SELECT @SELECT_COLUMN FROM TABLE WHERE COLUMN = @COLUMN_DATA

 

이런 경우는 어떨까?

 

어떤 조건에 대하여 조회하는 대상이 고정되어 있지 않고

 

PARAMETER를 통하여 그 대상들을 상황에 맞게 조회가 가능하다.

 

이것이 바로 동적 쿼리이다.

 

알아두면 좋은 지식들.. 메모 메모.. 오라클이라면 @ 대신 오라클 파라메터 문자를 써서 적용하면.. 될려나..

 

오라클 서버가 없어서 해 보진 못했지만 될 듯 하다.

Eclipse로 열었을 때 JSP 또는 JS 확장자 등 파일의 한글이 깨지는 것을 확인 할 수 있다.

 

이러한 현상은!!

 

Window->Preferences->General->Content Type에서 Default Encoding을 UTF-8 또는 EUC-KR로 처리 하면

 

정상적으로 나온다!!

조금 뻘짓을 해서 얻은 결과이기한데...

 

먼저 JDK를 설치해서 준비를 한다. 단!! 띄워쓰기가 있는 폴더에는 하지말자.. 컴파일 문제가 생긴다..

 

이거 땜시 아우..

 

환경 설저에느 JAVA_HOME 생성 후 자바를 설치 한 폴더를 지정하고, Path 부분에서 JAVA_HOME 아래의 bin 폴더까지 잡아준다.

 

그 다음 classpath 를 생성 후  .; 를 입력한다.

 

그 다음으로 제우스와 웹투비는 TMAX 에서 다운을 받는다.

 

물론 라이센스도 받아야한다.

 

주소는 아래와 같다.

 

http://technet.tmax.co.kr/kr/index.do

 

그리고 자바 버전은.. 어디든 좋은데.. 이클립스 JUNO의 경우는 1.6 이상이 필요하다.

 

1.6 아래로 할 경우 JSP 파일 생성하는 부분이 사라진다 ㅠ_ㅠ 이거 때문에.. 얼마나 뻘짓을 했던지..

 

다 설치 하고 했으면!!

 

JMaker의 라이센스를 이클립스 설치 폴더에 들어가서 license 폴더 생성 후 넣어준다.

 

그리고 JMaker Plug-In  의 features, plugins 폴더를 이클립스 폴더에 덮어 씌운다.

 

다음으로 Jeus Plug-In 에서 위 폴더와 동일한 폴더를 똑같이 또 덮어 씌운다.

 

여기까지가 설치가 완료 된 것이다.

 

다음으로 WebToB 설정이다.

 

WeToB 설치 폴더 아래에서 먼저 webtob/config/sample.m 파일을 http.m 이란 이름으로 복사 후 cmd-wscfl -i http.m 으로 컴파일해 준다

 

다음은 제우스다.

 

JEUS/CONFIG/노드명/노드명_SERVLET_ENGINE1 폴더에서 WEBMAIN.XML 을 열어 <webtob-address> 부분에서 원하는 IP를 넣는다. 설치하는 곳의 IP를 넣어야한다. 또는 127.0.0.1 을 넣어주면 정상동작한다.

 

다음은 JEUS/BIN 폴더에서 jeus.properties 파일을 열어 JEUS_WSDIR 관련 된 곳만 찾아서 지워주면 된다.

 

여기까직 모든 설치 및 설정이 완료가 된다.

 

이클립스에서는 간단하다. 이클립스로 WebProject를 생성 한 후, 아래의 Server 부분을 클릭하고 새로 추가를 한다.

 

거기서 TMAX 부분에서 설치한 제우스를 선택하고 다음을 누르면 노드와 비밀번호가 있는데 이것은 라이센스를 신청 했으 때의 hostname과 password를 넣어주고 실행하면!! 정상적으로 동작하는 것을 확인 할 수가 있다!!

 

반드시 명심해야 할 것은.. 각 버전마다 JDK도 체크를 하는 듯 한데.. 이클립스 버전을 잘 봐야 할 듯 하다.

헤더 속성을 찾아봐도 모르겠고 해서.. 컬럼 자체를 방지를 시켰다.

 

컬럼 색을 바꾸고 할 경우 이 방법으로 그냥 묶어두고 한다면 헤더를 클릭 했을 때

 

작성자가 지정한 색상이 바뀌지를 않는다.

 

foreach (DataGridViewColumn column in dgv_Item.Columns)
{
        column.SortMode = DataGridViewColumnSortMode.NotSortable;
}

사이트 여기 저기 돌아다녀보다가 알아두면 괜찮을거 같아서 끄적 끄적..

 

현재 윈도우 상에 열린 익스플로어의 URL이나 이름 등을 알아내는 코드 이다.

 

먼저 SHDocVw를 참조를 해 주고 다음과 같은 코드를 작성해 보자.

 

[DllImport("user32.dll")]
static extern int GetForegroundWindow();

 

foreach (InternetExplorer page in new ShellWindowsClass())
{
    Console.WriteLine(page.LocationName);
    Console.WriteLine(page.LocationURL);
    Console.WriteLine(page.Name);
}

 

결과

Neo's :: 글쓰기
http://neofirst.tistory.com/admin/entry/post
Windows Internet Explorer

 

위에서 보면 저런 형식으로 나온다. 뭔가 체크를 할 떄 이용하면 괜찮을 듯 하다.

[C#] 글자 간격 조정 C# 2012. 4. 4. 16:06

훈스에서 질문보다가 여기 저기 찾다보니 API에서 SetTextCharacterExtra 놈을 찾았다.

글자간의 간격을 조절해주는 것이라는데..

그래서 바로 한번 해 보았다.

[DllImport("gdi32.dll", CharSet=CharSet.Auto)] 
        public static extern int SetTextCharacterExtra(     
            IntPtr hdc,    // DC handle    
            int nCharExtra // extra-space value
        );

작업하기 전 저놈을 꼭!! 선언을 하고

private void Form1_Paint(object sender, PaintEventArgs e)
{
IntPtr hdc = e.Graphics.GetHdc();
SetTextCharacterExtra(hdc, 20);
e.Graphics.ReleaseHdc(hdc);

e.Graphics.DrawString("test", this.Font, Brushes.Black, 15, 5);
}

상에서 간격 조절(위에서 20) 해보니 해당하는 간격 만큼 글자 사이의 간격이 조절되어 나온다.

[C#] 한글 조합 C# 2012. 4. 4. 11:30

훈스 돌아다니다가 한글 조합하는 질의가 있어서 한번 해 봄..

계산식이 있었다 ㅎㅎ 네이버 형 찾아보다가 알았지만.. 뭐.. 그래도 일단 끄적..

알아두면 다 이득되니까..

string chosung = "ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ";
string jungsung = "ㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣ";
string jongsung = " ㄱㄲㄳㄴㄵㄶㄷㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅄㅅㅆㅇㅈㅊㅋㅌㅍㅎ";
int cho_Index = chosung.IndexOf("ㄱ");
int jung_Index = jungsung.IndexOf("ㅏ");
int jong_Index = jongsung.IndexOf("");
int result = ((cho_Index * 588) + ((jung_Index * 28) + jong_Index)) + 44032;
char temp = Convert.ToChar(result);
MessageBox.Show(temp.ToString());

저짝에 계산하는 놈이 굉장이 중요한거 같다. 한글 유니코드 조합이라.. 흠..

[SQL] UNPIVOT ORACLE/SQL 2012. 4. 3. 15:58

PIVOT의 경우 로우 단위의 내용을 컬럼 기준으로 하여 각기 통계를 내 놓았다면

UNPIVOT의 경우 컬럼 단위의 내용을 로우 기준으로 하여 나타 낼 수 있다.

샘플은 아래와 같다.

SELECT VALUE FROM
(
    SELECT 'A' AS A1, 'B' AS B2 FROM DUAL
)
UNPIVOT
(
VALUE FOR VALUE_TYPE IN (A1, B2)
)

인덱스에는 클러스터 인덱스와 넌 클러스터 인덱스 두가지로 나뉘어진다.

클러스터 인덱스의 경우 PK를 지정하면 자동적으로 생성이 되며, 인덱스의 열을 자동으로 정렬을 한다.

즉, 기본키를 지정함과 동시에 클러스터 인덱스가 생성이 되며 그 열을 기준으로 정렬이 된다.

특성상 범위 검색에는 좋으나 삽입, 삭제, 수정에 대해서는 속도가 느리다.

넌 클러스터 인덱스는 FK를 예를 들 수가 있는데 정렬 기능이 존재하지 않는다.

특성상 범위 검색에 약하며 삽입, 삭제, 수정에 대해서는 속도가 빠르다.

서로 반대되는 특징을 지니고 있다고 보면 된다.

생성 할 시 CREATE 옆에 CLUSTERED/NONCLUSTERED 를 붙여 생성 할 수 있다.

[SQL] SEQUENCE ORACLE/SQL 2012. 3. 29. 17:57

유일한 값을 생성한다. 증가 내용이나 이런건 물론 사용자가 지정 할 수가 있다.

PRIMARY KEY와 관련되는 경우 종종 사용하는 편인데.. 난 쓸 곳이 없어서 잘 안쓰는 듯..

다음은 예제이다.

CREATE SEQUENCE seq_no

START WITH 1

INCREMENT BY 1

MAXVALUE 1000

위와 같이 하면 기본적으로 생성이 된다. 시작과 증가 정도, 맥스 값을 지정한다.

NEXTVAL을 이용하면 하나씩 증가 하여 자동으로 입력이 가능하고 CURRVAL을 이용하면 현재 시퀀스의 값을 알 수가 있다.

또한 NOMAXVALUE나 NOMINVALUE를 지정하면 제한이 풀리며 CYCLE을 이용할 경우 최대 값을 넘기면 처음부터 순환하게 되어있다. NOCYCLE은 당연히 그 반대이다.

수정할 경우 ALTER를 이용하면 된다. 삭제시에는 DROP을 이용한다.