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
2294 Cubrid 9.3 버전 문의 3 secret 일산 2016.03.07 9
2293 세그먼트 3 file 큐브리드사랑 2016.03.07 6290
2292 연계 시 에러 문의 1 joke7 2016.03.04 8047
2291 Context requires compatible collations 오류 1 소소 2016.02.25 9922
2290 HA 사용시 to bo active 상태는 정확히 뭐죠? 2 라면 2016.02.25 8185
2289 마이그레이션 시 데드락 발생 문의 1 joke7 2016.02.25 8348
2288 윈도우에 관리모드 localhost 접속 안 됩니다. 2 file 나무친구 2016.02.24 9463
2287 테이블 생성시 reuse_oid 옵션 관련 문의 1 종이 2016.02.22 8844
2286 Cubrid 사용중 문의사항이 있습니다. 1 secret 도린아빠 2016.02.18 15
2285 Auto Increment에 대한 질문입니다. 3 너랑이마녀 2016.02.18 8070
2284 테이블 생성 시 디폴드 값 상이 함 문의 1 joke7 2016.02.17 8087
2283 큐브리드 사용한 데이터 구축 후 db 다운 현상 발생 5 lhb 2016.02.16 8267
2282 error code = -1150 관련 문의 드립니다. 1 큐브 2016.02.16 7544
2281 restart에러 2 life 2016.02.16 6092
2280 리눅스에서 cubrid 명령어 찾을수 없는현상 3 라면 2016.02.16 8705
2279 큐브리드 사용한 데이터 구축 시 시간이 너무 오래 걸립니다. 2 file lhb 2016.02.15 7581
2278 큐브리드 에러 관련 문의 입니다. 1 file 그러게 2016.02.15 5994
2277 특정값으로 문자열을 분리하려고 합니다 1 secret 이호영 2016.02.15 8
2276 oracle 마이그레이션 툴 이용 중 문제점에 대해 문의드립니다. 1 file 태진 2016.02.15 6670
2275 HA구성에서 파티션 적용가능? 1 라면 2016.02.12 6362
Board Pagination Prev 1 ... 81 82 83 84 85 86 87 88 89 90 ... 200 Next
/ 200

Contact Cubrid

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