아래와 같이 임시 테이블을 생성했습니다.
CREATE TABLE TBL_TEMP
(
FLD_STRING NCHAR(10)
)
필드는 유니코드를 저장하기 위해 NCHAR 타입으로 생성했습니다.
그리고 아래와 같이 임의의 문자열 10글자를 인서트했습니다.
INSERT INTO TBL_TEMP VALUES(N'abcdefghij');
그리고 C#에서 SELECT 테스트를 하기 위해 코드상에서 "SELECT * FROM TBL_TEMP"로 쿼리했습니다.
이렇게 빌드하면 문자열은 5글자 즉, 'abcde'까지만 반환합니다. 즉, 생성한 필드길이의 절반길이만 반환합니다.
필드 길이를 달리해도 마찬가지구요.
그래서 필드의 데이터 타입을 CHAR로 변경해봤습니다.
그러니 비로소 제대로 반환되네요.
C#이 기본적으로 유니코드이므로 NCHAR 타입으로 생성한건데,
MSSQL에서는 NCHAR형으로 테스트해서 정상작동을 확인했었는데,
큐브리드는 유니코드 문자열도 CHAR형으로 생성해야 하나요? 그럼 NCHAR형의 용도는...
C# 코드를 올려봅니다.
OleDbConnection oledbcon = new OleDbConnection("Provider=CUBRID OLE DB Provider;Location=systronics.iptime.org;Data Source=SysEye;User ID=dba;Cache Authentication=False;Encrypt Password=False;Mask Password=False;Persist Encrypted=False;Persist Security Info=False;Port=33000;Fetch Size=100");
oledbcon.Open();
OleDbCommand command = new OleDbCommand("select * from tbl_temp", oledbcon);
command.CommandType = CommandType.Text;
OleDbDataReader or = command.ExecuteReader();
while (or.Read())
{
string date = or.GetString(or.GetOrdinal("fld_string"));
}
or.Close();
oledbcon.Close();