Background Image

FORUM

조회 수 12532 추천 수 0 댓글 4
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
OS
Window7 64
CUBRID Ver.
9.3.3.0014
CUBRID TOOL Ver.
9.3.1.703
응용 환경(API)
c#

* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------

c# 소스상에서 MSSQL에서 Select한 데이터를 복사하여

큐브리드 Table에 Update를 하는 과정에서 한글깨짐이 발생하고 있습니다.


CUBRIDDataAdapter를 이용해서 빈 DataTable을 Select 후 Update 함수를 사용하여 Table을 변경하고자 하는데

정상적으로 DB에 데이터가 Update 되지만, 한글이 깨집니다.



CUBRID Database 연결정보에서 문자집합을 UTF-8로 지정이 되어있고,

Table 콜레이션 또한 utf8_bin으로 설정이 되어있는데 설정이 잘못 된건지요?(콜레이션이 정확하게 뭔지는 모르겠지만)


혹시나 이와 관련되어 지원하고 있는 함수가 있는지 알수있을까요?


혹시 몰라 c# 소스와 Table 정보/한글이 깨지는 데이터를 첨부해서 올립니다.

빠른 답변 부탁드립니다.


---------------------------------------------------------------------------------------------------------------------------------------


추가로

데이터베이스 연결 시 문자집합(charset)을 UTF-8로 설정하였을 때,

CUBRID MANAGER에서 질의응답모드로 Insert 쿼리를 수행하면 데이터가 정상적으로 돌아가고

Selete로 데이터를 조회 할 시 이또한 정상적으로 조회가 됩니다.


그러나 .net에서 DB 연결 시 설정을 아래와 같이 하고,

 -> new CUBRIDConnection("server=localhost;database=demodb;port=30000;user=dba;password=1234");


insert 문을 실행 하였을 때 Cubrid MANAGER에서 Select를 할 시 한글 데이터가 아래 첨부한 이미지처럼 깨져서 조회가 됩니다.

  ex) insert into code values ('1', '일');;

그래서  ODBC, insert into code values ('1', _UTF8'일'), byte array를 utf-8로 변환하여 insert 작업을 했으나

이것 또한 CUBRID MANAGER에서는 데이터가 깨진채로 출력이 됩니다.

CUBRID MANAGER 연결을 UTF-8이 아닌 EUC-KR로 연결하였을 때, .NET에서 입력한 한글 데이터값과 CUBRID MANAGER에서

INSERT문을 사용하여 추가한 값이 정상적으로 출력이 되고 있는 것을 보아,

CUBRID가 NET에서 쿼리를 실행하였을 때 UTF-8이 아닌 EUC-KR로 인식을 하는 것 같습니다.


(처음에는 .net의 문제로 판단하였으나 이후 코드상에 Selete문을 날려 확인해 본 결과 정상적으로 데이터를 가져오지만, CUBRID MANAGER에서 INSERT문을 통해 추가된 데이터는 조회하지 못하는 것으로 보아 CUBRID ADO.NET Driver의 문제가 아닌가 싶습니다.)


.NET에서는 CUBRID 사용 시 DB를 EUC-KR로만 사용을 해야하는 건지, 다른 방법이 있는 건지 빠른답변을 부탁 드립니다.




  • ?
    진우진 2016.01.21 18:57

    커넥션 부분 정의하실때 아래와 같이 charset=utf-8 도 넣어주시기 바랍니다.

    private static readonly string connString = "server=192.168.174.128;database=demodb;port=33000;user=public;password=;charset=utf-8";

  • ?
    minimin0516 2016.01.21 19:08

    커넥션 부분 마지막에 해당 구문을 넣어도 한글이 정상적으로 저장되지 않았습니다.

    (해당 구문도 이전에 테스트 하였는데 글 작성 시 누락되었습니다..)

    이것 말고 다른 방법은 없나요?

    또, mssql에서의 image 타입은 어떤걸로 대체되는지도 알려주셨으면 합니다.

    현재 image 타입을 BIT VARYING(2000)으로 지정하였으나, 데이터 업데이트 시 예외처리가 발생합니다...

    (euc-kr로 진행하고 있는 상황입니다.)

  • ?
    진우진 2016.01.21 19:22

    1. 사내에서 테스트할 시에는 charset=utf-8 추가 후 정상적으로 입력 되었습니다.

    다음 샘플 코드를 참조하여 데이터 업데이트 이전에 MySQL에서 가져온 데이터를 UTF-8로 인코딩 해보시기 바랍니다.


    string sql = "SELECT * from member";

                

                //ADO.NET

                

                byte[] data_query = Encoding.Default.GetBytes(sql);

                using (CUBRIDCommand cmd = new CUBRIDCommand(Encoding.GetEncoding("UTF-8").GetString(data_query), DBConn))

                {

                    using (DbDataReader reader = cmd.ExecuteReader())

                    {

                        while (reader.Read())

                        {

                            byte[] bytes = Encoding.GetEncoding("UTF-8").GetBytes(reader.GetString(6));

                            string str = Encoding.Default.GetString(bytes);

                        }             

          

                    }

                }


    2. MySQL image 타입은 bit varying 처럼 뒤에 크기 설정부분 없이 타입 설정하신 뒤 다시 시도해보시기 바랍니다.

  • ?
    minimin0516 2016.01.21 20:11
    String sql = " select * from nation order by `code` asc";
    using (CUBRIDDataAdapter da = new CUBRIDDataAdapter(sql, conn))
    {
        using (CUBRIDDataAdapter daCmd = new CUBRIDDataAdapter(sql, conn))
        {
            CUBRIDCommandBuilder cmdBuilder = new CUBRIDCommandBuilder(daCmd);
            da.InsertCommand = cmdBuilder.GetInsertCommand();
        }
    
        DataTable dt = new DataTable("nation");
        da.Fill(dt);
    
        DataRow newRow = dt.NewRow();
    
        newRow["code"] = "코드";
        newRow["name"] = "이름";
        newRow["capital"] = "캐피탈";
        newRow["continent"] = "내용";
    
        dt.Rows.Add(newRow);
        da.Update(dt);
    }
    http://www.cubrid.org/manual/ko/9.3.0/api/adodotnet.html 에서 제공하는 사용법대로
    데이터를 insert 하고, cubrid manager에서 utf-8로 설정하고 조회 했을 때 정상적으로 한글이 출력이 되는지 확인 부탁드립니다.
    정상적으로 됐을 경우 database 설정과 table 설정이 궁금합니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 admin 2024.04.23 51
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4458
1174 admin입력을 해도 오류가 떠요ㅠㅠ 1 file 노도아 2017.08.10 269
1173 a 디비에서 b디비의 테이블에 접근(crud)할 수 있나요? 1 casual1492 2019.09.24 130
1172 _db_attribute 수정 권한 1 mkchoi 2022.04.04 88
1171 _cubrid.InterfaceError: (-20002, 'ERROR: CCI, -20002, Invalid connection handle') 4 beatb 2021.04.22 276
1170 [해결됨] 3.0 -> 3.1 이전중에 문제가 발생해서 현재 업무 마비상태 입니다. 11 file reerror 2011.03.25 10530
1169 [평창농업정보센터]급한질문입니다. 1 secret 바보천사 2009.06.02 17
1168 [테이블의 하위 페치 중]만 계속 나오면서 DB의 테이블을 보여주지 않고 있습니다. 4 secret 어려운큐브 2011.10.11 12
1167 [큐브리드 9.2] 세션수 제한? 1 secret 라온힐조 2013.10.28 4
1166 [컴파일 오류] cas_cci.h", line 38.2: 1506-218 (E) Unknown preprocessing directive #ident. 1 이행복 2011.02.08 9664
1165 [초보질문]function 변환 문의 (oracle -> cubrid) 6 삽질중 2009.05.08 22591
1164 [초보질문] 텍스트파일을 하나의 TABLE로 입력하고 싶습니다. 2 몰라몰라 2011.12.03 12201
1163 [초보질문] 타유저 TABLE 생성 가능여부 및 볼륨 데이타 입력 문의 1 삽질중 2009.05.08 14046
1162 [초보질문] 타 dbms 연동 여부 3 삽질중 2009.06.10 12425
1161 [초보질문] 큐브리드 매니저에서 데이타베이스 종료시 에러 1 삽질중 2009.05.16 11940
1160 [초보질문] dbcp test 중 오류발생 3 file 삽질중 2009.05.16 18405
1159 [초보질문] cubrid service status 나오는 메시지의 의미는? 3 삽질중 2009.06.04 12962
1158 [초보질문] 쿼리편집기에 대한 질문입니다. 2 몰라몰라 2011.08.28 10002
1157 [초보질문] 객체관계 테이블 set type 입력 및 조회 방법문의 2 삽질중 2009.05.13 14652
1156 [초보질문] databases.txt 에 접근할수 없다는 에러메시지가 나옵니다.. 4 file 몰라몰라 2011.08.29 10845
1155 [초보문의] 질의편집기 접속 오류 6 삽질중 2009.07.29 9742
Board Pagination Prev 1 ... 137 138 139 140 141 142 143 144 145 146 ... 200 Next
/ 200

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales