반응형

Oracle 10g에서는 REGEXP_로 시작하는 함수를 지원합니다. 레귤러 익스프레션 지원이죠. 아래는 그 함수들의 사용방법을 공유합니다.

1. REGEXP_INSTR 함수
- 문법 : REGEXP_INSTR(소스 문자열, Pattern [, 검색 시작 위치 [, 발생 횟수 [, 반환 옵션 [, Match를 시도할 때의 옵션]]]])
- 예제

1
2
3
4
5
6
SELECT REGEXP_INSTR('Regular Expression', 'a') REG_INS
FROM dual;
 
   REG_INS
----------
         6



2. REGEXP_LIKE
- 문법 : REGEXP_LIKE(소스 문자열, Pattern [, Match를 시도할 때의 옵션])
- [[:digit:]] : 숫자인것
- [^[:digit:]] : 숫자가 아닌것
- [[:alpha:]]
- 필듯가 숫자와 문자가 같이 있을 경우 잘 판단해야 함
- 예제

1
2
3
4
5
6
7
8
9
10
SELECT SSN                            
FROM   TEST                           
WHERE  SSN > ' '                      
AND    REGEXP_LIKE(SSN, '[^[:digit:]]');
 
SSN
-------------
******2229149
******2228659
******2223591



3. REGEXP_REPLACE
- REGEXP_REPLACE(소스 문자열, Pattern [, 바꿀 문자열 [, 위치 [, 발생횟수 [Match 파라미터]]]])
- 예제

1
2
3
4
5
6
7
8
9
SELECT REGEXP_REPLACE(SSN, '[0-9]', '*' , 7) REG_REP
FROM(                                               
          SELECT '7901061842210' SSN                
          FROM dual                                 
);   
 
REG_REP
-------------
790106*******



4. REGEXP_SUBSTR
- REGEXP_SUBSTR(소스 문자열, Pattern [, 위치 [, 발생 횟수 [, Match를 시도할 때의 옵션]]])
- 예제

1
2
3
4
5
6
7
8
9
SELECT REGEXP_SUBSTR(EMAIL, '[^@]+') REG_SUB
FROM(                                      
         SELECT 'pepsi@paran.com' EMAIL    
         FROM dual                         
); 
 
REG_S
-----
pepsi


위 내용 출처 : http://happybuk.tistory.com/50


# 문자 클래스
 [:digit:]    : 숫자
 [:punct:]  : 특수문자
 [:alpha:]  : 알파벳

기타, 정규표현식 단축 문자, 문자 클래스


# 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/*
-- # 문자 클래스이용 숫자, 특수문자 제거
*/
SELECT REGEXP_REPLACE(
                '!23$56^*[]<>()~`'' 숫자, .특수문자 테스트_Test '
                , '[[:digit:]|[:punct:]]'
                , '') AS RESULT
     FROM DUAL
;   
RESULT
--------------------------------------------------------------------------------
 숫자 특수문자 테스트Test
 
 
--------------------------------------------------------------------------------
/*
    -- TOPIC 컬럼에 한글이 1~10개 사이인 것을 조회
    -- 옵션
    $ = {}$ 과 사용시에 절대값인듯...?
*/
 
SELECT BULLETIN_SEQ
        , TOPIC
        , CREATE_ID
    FROM BULLETIN
    WHERE REGEXP_LIKE(TOPIC, '^[가-힝]{1,10}$')
    ORDER BY 1
;
 
--------------------------------------------------------------------------------
/*
    -- 한글 문자인 것만 조회
*/ 
SELECT BULLETIN_SEQ
        , TOPIC
        , CREATE_ID
    FROM BULLETIN
    WHERE REGEXP_LIKE(TOPIC, '^[가-힝]')
    ORDER BY 1
;
 
--------------------------------------------------------------------------------
/*
   -- # TOPIC 컬럼에 영어 대소문자가 3~10개 사이 또는 한글이 2~3개 사이인 것을 조회
*/ 
SELECT BULLETIN_SEQ
        , TOPIC
        , CREATE_ID
    FROM BULLETIN
    WHERE REGEXP_LIKE(TOPIC, '^[a-zA-Z]{3,10}|[가-힝]{2,3}$')
;   
 
--------------------------------------------------------------------------------
SELECT pw
  FROM t
 WHERE REGEXP_LIKE(pw, '[a-z]') -- 소문자 포함 여부
   AND REGEXP_LIKE(pw, '[A-Z]') -- 대문자 포함 여부
   AND REGEXP_LIKE(pw, '[0-9]') -- 숫자 포함 여부
   AND REGEXP_LIKE(pw, '[[:punct:]]') -- 특수문자 포함 여부
   AND LENGTH(pw) >= 8 -- 8자리 이상
;
 
--------------------------------------------------------------------------------
/*
   -- # 컬럼 check 제약 조건
*/
-- 10자 이하의 한글만 입력 받고자 할때.
ALTER TABLE BULLETIN
       ADD CONSTRAINT BULLETIN_USER_NAME_KO_CHK
       CHECK (REGEXP_LIKE(USER_NAME_KO, '^[가-힝]{1,10}$'))
;

출처 ; http://develop.sunshiny.co.kr/840

반응형
반응형

개행문자 (\r\n)
chr(10) : Line Feed   <-- 줄바꾸기
chr(13) : CR   <-- 행의 처음으로 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
-- 개행후 첫번째를 ; 으로 교체
-- REPLACE(CAREER, chr(10), chr(13)||chr(10)||';')
 
WITH T AS(
    SELECT '개인전
2011
2007
2005
2003
2003' AS CAREER
    FROM DUAL
)
SELECT REPLACE(CAREER, chr(10), chr(13)||chr(10)||';') AS CAREER
    FROM T
;
CAREER
--------------------------------------------------------------------------------
개인전
;2011
;2007
;2005
;2003
;2003
 
 
-- log 함수 : 상용로그 값을 구함.
SELECT LOG(100, 1000)
    FROM DUAL
;
LOG(100,1000)
-------------
          1.5
 
 
-- sign 함수 : 결과물이 음수이면(-)로 양수면(+)로 표시
SELECT SIGN(2-5), SIGN(2-2), SIGN(5-2)
    FROM DUAL
;   
 SIGN(2-5)  SIGN(2-2)  SIGN(5-2)
---------- ---------- ----------
        -1          0          1
 
 
SELECT COS(90), TAN(90), ATAN(180)
    FROM DUAL
;    
   COS(90)    TAN(90)  ATAN(180)
---------- ---------- ----------
-.44807362 -1.9952004 1.56524083
 
 
-- chr 함수 : 해당 숫자를 아스키값으로 인식하여 그 값에 대한 문자를 출력
SELECT ASCII('A'), CHR(65)
    FROM DUAL
;   
ASCII('A') CH
---------- --
        65 A


반응형
반응형

Oracle 중복 값 체크및 제거


예) 하나의 게시물에 첨부파일 여러개가 등록되었을 경우, 특정 순번째 하나의 파일 정보만 추출


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/*
  -- #  ROW_NUMBER() OVER 를 이용한, 다중값에서 특정 값만 추출
*/
SELECT BOARD_SEQ
        , FILE_NAME
        , COUNT(BOARD_SEQ)
        , ORDER_NO
   FROM(
SELECT BOARD_SEQ
            , FILE_NAME
            , ROW_NUMBER() OVER (PARTITION BY BOARD_SEQ ORDER BY FILE_SEQ) ORDER_NO
    FROM BOARD_FILE BF
    )
    WHERE ORDER_NO = 1
    GROUP BY BOARD_SEQ, FILE_NAME, ORDER_NO
;  
 
/*
  -- #  ROWID 를 이용한, 다중값에서 특정 값만 추출
*/
SELECT BOARD_SEQ
            , FILE_NAME
            , COUNT(BOARD_SEQ)
    FROM BOARD_FILE BF
    WHERE ROWID IN(SELECT MAX(ROWID) FROM BOARD_FILE WHERE BOARD_SEQ = BF.BOARD_SEQ)
    GROUP BY BOARD_SEQ
;


반응형
반응형

Oracle Replace 함수 생성(결과값 변환 출력)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
CREATE OR REPLACE FUNCTION FN_REPLACE_CUST(
    IN_VALUES     IN      VARCHAR2,
    IN_TYPE         IN INT,
    IN_DELIMETER IN    VARCHAR2
)
RETURN VARCHAR2
    
/**************************************************************************
  # FN : FN_REPLACE_CUST
  # 옵션
  IN_VALUES     : 분리할 문자열 입력
  IN_TYPE        : 출력값 구분자(코드, 코드명)
  IN_DELIMITER : 분리할 구분자
**************************************************************************/
IS
    RETURN_VAL    VARCHAR2(2000); -- 결과 리턴 변수
    TMP_RET_VALUE VARCHAR2(2000);  -- 결과 임시 저장 변수
    
    SET_CODE  VARCHAR2(2000);        -- SELECT 결과 코드 저장 
    SET_CODE_NAME VARCHAR2(2000); -- SELECT 결과 코드명 저장
     
BEGIN
    
   -- IN_VALUES의 값이 없으면 빈 값을 리턴하고 종료
    IF LENGTH(LTRIM(RTRIM(IN_VALUES))) = 0 THEN
        RETURN '';
    END IF;
    
   FOR ForResult IN
    (
     WITH T AS
      (
        SELECT IN_VALUES AS SET_VALUES FROM DUAL -- 입력받은 문자열 임시 테이블 처리
       )
       /* 문자열을 분리하여 세로로 추출 */
       SELECT TRIM(REGEXP_SUBSTR(SET_VALUES, '[^'||IN_DELIMETER||']+', 1, LEVEL)) AS SET_VALUES
         FROM T
         CONNECT BY INSTR(SET_VALUES, ''||IN_DELIMETER||'', 1, LEVEL - 1) > 0
    )
    LOOP
            /* COMMON_CODE 의 코드 값과 비교후 결과값 대입 */
            SELECT CODE_M, CODE_M_NAME
                INTO SET_CODE, SET_CODE_NAME
                FROM COMMON_CODE
                WHERE CODE_L = '005'
                AND CODE_M = ForResult.SET_VALUES;
                  
            /* # IN_TYPE 구분값에 따라 코드번호, 코드명 추출 */
            IF IN_TYPE = 1 THEN
                TMP_RET_VALUE := SET_CODE;
            ELSIF IN_TYPE = 2 THEN
                TMP_RET_VALUE := SET_CODE_NAME;
            END IF;
                  
            /* # 결과값 저장 : 결과값 가로 배치 */
            IF RETURN_VAL IS NULL THEN
                    RETURN_VAL := TMP_RET_VALUE;
               ELSE
                    RETURN_VAL := RETURN_VAL||','||TMP_RET_VALUE;
            END IF;
    END LOOP;
    
    RETURN RETURN_VAL; -- 결과 리턴
    
    EXCEPTION
         WHEN OTHERS THEN
--              RETURN SQLERRM;
            RETURN IN_VALUES; -- 에러 또는 조인 결과값 없을시 기본 입력받은 값 리턴
    
END FN_REPLACE_CUST;
/



> 생성후 조회

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-- # IN_TYPE : 1
SELECT ORG_TYPE, FN_REPLACE_CUST(ORG_TYPE, 1, '|') AS REPLACE_VALUES
    FROM USER_INFO
;       
 
ORG_TYPE         REPLACE_VALUES
--------------------------------------------
101|102|103|104    101,102,103,104
 
 
-- # IN_TYPE : 2
SELECT ORG_TYPE, FN_REPLACE_CUST(ORG_TYPE, 2, '|') AS REPLACE_VALUES
    FROM USER_INFO
;    
 
ORG_TYPE         REPLACE_VALUES
--------------------------------------------
101|102|103|104    가수,작곡가,작사가,기타

출처 :http://develop.sunshiny.co.kr/

반응형
반응형

 KO16KSC5601 에서 UTF8 or AL32UTF8 데이터 이관(import)


KO...등으로 시작하는 캐릭터셋은 한글을 2Byte로 표현
UTF8 에서는 한글을 3Byte로 표현.

> KO16KSC5601에서 Export한 파일을 UTF8의 DB에 데이터 이관시, 
  한글 문자열이 있는 컬럼에서 아래와 같은 에러가 발생하며 import 되지 않음.

IMP-00019: row rejected due to ORACLE error 12899
IMP-00003: ORACLE error 12899 encountered
ORA-12899: value too large for column "USER_ID"."TABLE_NAME"."CONTENTS" (actual: 105, maximum: 100)



# CHAR, VARCHAR 타입의 컬럼에서 기본단위(Byte)를 문자단위(Char)로 변경하여 import 가능
  > 이 방법도 KO16KSC5601 캐릭터셋의 VARCHAR 타입에서 한글 글자수가 1330(4000/3)여개 이상일경우 문제발생.


> 진행
1) 캐릭터셋 KO16KSC5601의 데이타 Export
2) Import 할 DB의 NLS_LENGTH_SEMANTICS 파라메터 변경
   ALTER SYSTEM SET NLS_LENGTH_SEMANTICS=CHAR SCOPE=BOTH ;
   또는
   CREATE TABLE TABLE_NAME(VARCHAR2(100 CHAR))와 같이 
   DDL 스크립트의 문자 데이터 타입의 단위설정에 CHAR를 지정(기본 Byte 단위)
3) 목표 DB의 Oracle 계정 imp 명령에서 SHOW=Y 옵션을 이용하여 DDL 스크립트 추출
   imp dbuser/1234 file='/DMP/database.dmp' log='/DMP/database_sql.log' fromuser=dbuser SHOW=Y
   또는
   토드등의 툴에서 DDL 스크립트 추출
4) 목표 DB에 DDL 스크립트를 이용하여 테이블 생성(스크립트의 문자 타입에 CHAR 단위 지정)
5) 목표 DB에 imp 명령에서 IGNORE=Y 옵션을 이용하여 데이터 import 진행
   imp dbuser/1234 file='/DMP/database.dmp' log='/DMP/database.log' fromuser=dbuser IGNORE=Y


출처 : http://develop.sunshiny.co.kr/category/10

반응형
반응형

# 컬럼 문자(char), 바이트(byte) 단위 변경



NLS_LENGTH_SEMANTICS는 바이트(Byte) 또는 문자(Char)길이를 사용하여 char, varchar2 타입의 컬럼을 만들수 있습니다. 
이때 기존의 컬럼은 영향을 받지 않습니다.

NLS_LENGTH_SEMANTICS는 SYS와 SYSTEM의 테이블에 적용되지 않고, 데이터 사전(Data Dictionary)은 항상 바이트 의미 체계를 사용합니다.
그래서 NLS_LENGTH_SEMANTICS를 이용하여 CHAR 단위의 컬럼을 생성해도 데이터 사전에는 실제 바이트로 보여줌


Oracle 9i부터 컬럼의 데이터타입에 Byte 또는 Char를 붙여 단위별 지정 가능
   문자(Char)단위로 변경 하면 설정한 값에 따라 자동으로 Byte 공간을 할당해줍니다.   

> KO16KSC5601
Byte 단위 : 영문/숫자/기호(1Byte), 한글/한자(2Byte)
Char 단위 설정 예) VARCHAR2(100 CHAR) -> VARCHAR2(200)(데이터사전)

> UTF8
Byte 단위 : 영문/숫자/기호(1Byte), 한글/한자(3Byte)
Char 단위 설정 예) VARCHAR2(100 CHAR) -> VARCHAR2(400)(데이터사전)


# NLS_LENGTH_SEMANTICS 설정 방법

1) NLS_LENGTH_SEMANTICS 전역 파라메터 변경 : DBMS 재시작 필요
  > ALTER [SYSTEM|SESSION] SET NLS_LENGTH_SEMANTICS=[CHAR|BYTE]
  
2) 테이블 생성시 지정
  > VARCHAR2(100 CHAR)


> 캐릭터셋 확인

1
2
3
4
5
6
7
8
9
10
SELECT PARAMETER, VALUE
    FROM NLS_DATABASE_PARAMETERS
    WHERE PARAMETER LIKE '%CHAR%';
     
      PARAMETER                      VALUE
------------------------------ --------------------------
NLS_NUMERIC_CHARACTERS         .,
NLS_CHARACTERSET               AL32UTF8
NLS_NCHAR_CONV_EXCP            FALSE
NLS_NCHAR_CHARACTERSET         AL16UTF16


> NLS_LENGTH_SEMANTICS 전역 파라메터 조회

1
2
3
4
5
6
7
8
9
10
11
SELECT *
    FROM NLS_SESSION_PARAMETERS
    WHERE PARAMETER = 'NLS_LENGTH_SEMANTICS'
;
 
-- SQL Plus 에서 파라메터 조회
SQL> SHOW PARAMETER NLS_LENGTH_SEMANTICS
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
nls_length_semantics                 string      BYTE


> 데이터베이스 전역 NLS_LENGTH_SEMANTICS 변경, char 타입

1
2
3
4
5
6
7
8
SQL> ALTER SYSTEM SET NLS_LENGTH_SEMANTICS=CHAR SCOPE=BOTH ;
 
-- SQL Plus 에서 파라메터 조회
SQL> SHOW PARAMETER NLS_LENGTH_SEMANTICS
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
nls_length_semantics                 string      CHAR


> DATA_LENGTH, CHAR_USED 타입 조회

1
2
3
4
5
SELECT  COLUMN_ID, OWNER, TABLE_NAME, COLUMN_NAME, DATA_TYPE, DATA_LENGTH, CHAR_USED
    FROM DBA_TAB_COLUMNS
    WHERE TABLE_NAME ='[테이블명]'
    ORDER BY COLUMN_ID
;


> 테이블 생성및 테스트

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/*
 # CHAR 타입 테이블 생성
*/
CREATE TABLE CHAR_TEST(
    SEQ NUMBER,
    TEXT_SMALL VARCHAR2(100 CHAR),
    TEXT_BIG VARCHAR2(4000 CHAR)
)
 
/*
 # CHAR_TEST 테이블 구조 조회
 > 테이블 구조상에서는 CREATE TABLE시에 설정한 사이즈로 Char 타입 정보 출력
*/
DESC CHAR_TEST;
 
Column Name    ID    Pk    Null?    Data Type   
--------------------------------------------------------
     SEQ         1        Y    NUMBER
   TEXT_SMALL   2        Y    VARCHAR2 (100 Char)
   TEXT_BIG     3        Y    VARCHAR2 (4000 Char)
 
 
/*
 # Data Dictionary 테이블 컬럼별 타입 조회(실제 바이트)
 > 데이터사전에서는 Char 타입에 맞춰서 자동으로 변경된 데이타 길이가 보여짐
   VARCHAR2 타입 최고 길이 4000바이트 안에서 자동 변경
*/
SELECT  COLUMN_ID, OWNER, TABLE_NAME, COLUMN_NAME, DATA_TYPE, DATA_LENGTH, CHAR_USED
    FROM DBA_TAB_COLUMNS
    WHERE TABLE_NAME ='CHAR_TEST'
    ORDER BY COLUMN_ID
;
 
COLUMN_ID   OWNER   TABLE_NAME   COLUMN_NAME   DATA_TYPE   DATA_LENGTH   CHAR_USED
--------------------------------------------------------------------------------
    1    SUNSHINY    CHAR_TEST    SEQ    NUMBER    22   
    2    SUNSHINY    CHAR_TEST    TEXT_SMALL    VARCHAR2    400    C -- CHAR 타입
    3    SUNSHINY    CHAR_TEST    TEXT_BIG    VARCHAR2    4000    C -- CHAR 타입


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/*
 # BYTE 타입 테이블 생성
 > 전역 NLS_LENGTH_SEMANTICS 가 BYTE 일경우 기본으로 BYTE 타입 생성
*/
CREATE TABLE BYTE_TEST(
    SEQ NUMBER,
    TEXT_SMALL VARCHAR2(100),
    TEXT_BIG VARCHAR2(4000)
)
 
-- BYTE_TEST 테이블 구조 조회
DESC BYTE_TEST;
 
Column Name    ID    Pk    Null?    Data Type    Default    Histogram    Encryption Alg
------------------------------------------------------------------------------------
    SEQ         1        Y    NUMBER        No       
TEXT_SMALL    2        Y    VARCHAR2 (100 Byte)        No       
TEXT_BIG      3        Y    VARCHAR2 (4000 Byte)        No   
 
-- Dictionary 테이블 컬럼별 타입 조회
SELECT  COLUMN_ID, OWNER, TABLE_NAME, COLUMN_NAME, DATA_TYPE, DATA_LENGTH, CHAR_USED
    FROM DBA_TAB_COLUMNS
    WHERE TABLE_NAME ='BYTE_TEST'
    ORDER BY COLUMN_ID
;
 
COLUMN_ID    OWNER    TABLE_NAME    COLUMN_NAME    DATA_TYPE    DATA_LENGTH    CHAR_USED
--------------------------------------------------------------------------------
     1    SUNSHINY    BYTE_TEST    SEQ    NUMBER    22   
     2    SUNSHINY    BYTE_TEST    TEXT_SMALL    VARCHAR2    100    B -- BYTE 타입
     3    SUNSHINY    BYTE_TEST    TEXT_BIG    VARCHAR2    4000    B -- BYTE 타입

출처:http://develop.sunshiny.co.kr/969

반응형
반응형

ORALCE decode 입니다



if문과 비슷합니다 조건부가 가능합니다.



DECODE(컬럼,'홍길동','11','22')


이런식으로 비교 컬럼,비교데이터,true,false

입니다


컬럼이 홍길동과 같으면 11이

틀리면 22 입니다


예제로 select문 하나해보겟습니다

SELECT 

educnt,

edu,

etc,

DECODE(educnt,(select count(*) from table where edu_p = og_cd),'꽉참','꽉안참') as AKK

FROM table2


위처럼 서브쿼리도 안에다 비교에 넣을수있습니다

감사합니다~

반응형
반응형



얼랏창 알림에 줄바꿈이 필요할 때가 있습니다

그럴땐 아래와 같이 사용하시면 됩니다

exam) alert("안녕하세요 \n 블로그입니다");

결과 : 

안녕하세요

블로그입니다 


이런식으로 나옵니다

문자열\n문자열\n

"\n" 을 여러 개 넣으면 여러줄로 줄바꿈이 됩니다.

반응형
반응형

안드로이드 프로그램을 작성한 후 테스트를 위해서는 

실제 장비에 프로그램을 포팅하여 테스트하는 것이 가장 좋지만,

수많은 사이즈와 성능의 장비들을 모두 준비하여 테스트 하는 것은 

현실적으로도 힘들고, 번거롭기도 하다.

그래서, 안드로이드 스튜디오에서는 AVD(Android Virtual Device)라는 가상의 애뮬레이터를 제공하고,

우리는 이 애뮬레이터를 통해서 다양한 디바이스에서의 테스트를 해볼 수 있다.

(물론, 당연히 실제 디바이스와 100% 동일하지는 않지만..)


여기서는 AVD 설정과 실행방법을 소개한다.

(참고로, 나는 여기서 AVD 설정 실패...내 PC에서는 돌지 않는다. ㅠㅠㅠㅠㅠㅠㅠ

하지만, 이건 나의 PC사양의 문제이므로 이 글을 보는 다른 이들은 모두 성공하실 것임..ㅠㅠ)



AVD를 설정하고, 실행시키기 위해


1. Tools > Android > AVD Manager를 선택한다.


2. 'Create Virtual Device' 버튼을 클릭한다.


3. 여러가지 Device 중 원하는 하드웨어 스펙을 선택한다.

Category를 선택하고 나면 해당 카테고리에서 기본으로 제공하는 Device 정보중 하나를 선택해도 되고, 하단의 'New Hardware Profile'을 선택하여 상세한 하드웨어 정보를 설정할 수도 있다.

여기서는 Phone category를 선택하고, 그중 해상도 480*800의 Nexus S를 선택하였다.


4. 하드웨어에 들어갈 System Image를 선택한다.

Recommended 탭에서 추천한 Marshmallow x86이미지를 선택하려고 하니, 오른쪽에 뜨는 빨간 메세지 ㅠㅠ

(아마 나 빼고 다른 분들은 안날거에요...ㅠㅠ)

일단 진행이 되니 패스하고, 이 빨간 메세지에 대해서는 다음 포스팅에서 ...


5. Virtual Device의 상세 스펙을 설정한다.

AVD Name은 여러개의 Virtual Device를 구분하기 위한 이름이므로 자유롭게 기술한다.

'Show Advanced Settings'를 클릭하여 기타 상세사항들을 자유롭게 조정한다.

여기서는 일단 변경없이 그대로 생성한다.

이 설정들은 나중에도 변경할 수 있다.

Finish 버튼을 클릭한다.


6. Android Virtual Device Manager에 새로운 Device가 생성된 것을 볼 수 있다.


7. AVD Manager의 화살표 버튼을 클릭하거나, 

화면 상단의 화살표 버튼을 클릭하면 생성된 Virtual Device가 실행된다.


요렇게 실행되면 되는데,

사실 아래 캡쳐는 제대로 실행이 안된 상태이다.

원인은 아까 중간에 스킵했던 빨간 오류 메세지..

이 내용에 대해서는 다음 포스팅에...하휴...


여기 까지 하면 애뮬레이터 설치 및 실행 완료!



출처: http://hianna.tistory.com/144 [어제 오늘 내일]

반응형
반응형

Spring + ibatis jboss로 연동하여 DB select문, insert문, update문, delete문 등을

JAVA로 DB연결부터 시작하여 DB SQL문까지 구구절절 쓸 필요없이 XML로 SELECT문 등을 따로 적어넣고

사용할수가 있다.

 

그래서 필자는 구현중에 There is no statement named xxxx in this SqlMap 이러한 에러가 나와, 첫대면을 하게되었는데...?

영어 실력이 부족하지만;; 대충 맞춰보면...

SqlMap 안에 기재된 이름인 xxx가 없어서 존재하지않아 나는에러이다...

 

자세한 소스 내용은 제쳐두고, 간단하게만 소스 공개하도록 하겠다. 한줄..

스프링 관련책이나, jboss 5 책을보면서 이소스를 보면 무슨의미인지 알것이다.

 

java dao 부분에 구현된 소스 일부 (빨간색 소스 한줄이 xml에있는 sql를 실행시켜주는 부분이다.)

getSqlMapClientTemplate().queryForObject("com.sec.test.mo.selectList");

 

selectList.xml 구현부분

<sqlMap namespace="com.sec.test.mo">

    <select id="selectList" resultClass="java.lang.Integer" parameterClass="String">
        Select COUNT(*)
        FROM TCST_WEB_LOG
    </select>

 

sqlMap-config.xml 구현부분

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig      
    PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"            
    "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>

     <sqlMap resource="com.sec.test.mo/selectList.xml"/>
</sqlMapConfig>

 

// sqlMap resource 부분에 xml 파일 패키지부터 이름까지 지정이 안되어있으면

   There is no statement named xxxx in this SqlMap  에러가 발생하게된다.

   에러의 의미와도 맞게 sqlMap이 정의되어있지않아, 나는에러이다.

 

이게 아니면 dao 구현부분에서 queryForObject("com.sec.test.mo.selectList");

() 안에 내용이 잘못되어 문제를 일으킬수 있다.



출처: http://zanywitch.tistory.com/76 [엉뚱한 마녀의 상상!?]

반응형

+ Recent posts