Background Image

FORUM

조회 수 12538 추천 수 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 118
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4474
3999 Loaddb 유틸리티 사용시 log archive(lgar) 관련 문의 3 뚜벅뚜벅 2024.05.03 29
3998 큐브리드 구동 안됨[2] 3 마로비 2024.04.30 45
3997 큐브리드 구동 안됨 1 마로비 2024.04.30 30
3996 [데이터 이관] 큐브리드 데이터 이관 문의 4 뚜벅뚜벅 2024.04.30 76
3995 LIMIT사용 시 Outer join query optimization 문의 4 안녕 2024.04.30 47
3994 clob데이터 경로 바꿀수 있스니까? 1 자바천재 2024.04.29 48
3993 db에 저장되어 있는 CLOB 데이터의 위치가 어디로 저장되는지 확인하는 방법이 있을까요? 1 자바천재 2024.04.25 35
3992 큐브리드 서비스 시작이 안됩니다. 1 file 황남빵 2024.04.24 40
3991 큐브리드 JDBC 드라이버 XA문의 및 큐브리드 분산트랜잭션(XA) 지원 문의 1 몽키스패너 2024.04.24 35
3990 group_concat 변수 리턴 관련... 1 썬더기 2024.04.22 30
3989 기 DB에서 테이블 정보만 가져와서 다른 DB에 생성 1 바다소금 2024.04.22 25
3988 큐브리드 매니저 속도 문의 1 연동테스트용 2024.04.22 28
3987 cubrid count 속 2 kanin 2024.04.19 33
3986 cubrid 10.1 데이터 덮어쓰기 질문입니다. 4 ysk96 2024.04.18 86
3985 ACTION 명령어? 예약어? 1 투투투투기기 2024.04.17 25
3984 sql 구문 사용시 데이터 타입 decimal일 경우 1 투투투투기기 2024.04.11 36
3983 Regexp_count 4 SEO 2024.04.09 71
3982 큐브리드 메모리 오류 관련 질문 2 file 뚜벅뚜벅 2024.04.09 76
3981 큐브리드 실행이 안되는 이슈 1 file 최현욱 2024.04.09 50
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 200 Next
/ 200

Contact Cubrid

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