2012-12-17 2 views
0

jTDS 1.2.6을 사용하여 Adaptive Server Enterprise/15.7.0에 연결합니다. 준비된 명령문이 VARCHAR(16) 열이있는 테이블에 행을 삽입하면 문자열이 자동으로 잘립니다. 삽입이 성공하고 경고가없고 DataTruncation 예외가 발생하지만 인코딩 된 문자열은 16 진수로 잘립니다.문자열 잘림 감지 방법

어떻게 문자열 잘림을 감지 할 수 있습니까?

답변

0

string_rtruncation on을 설정하지 않으면 Adaptive Server는 경고 또는 오류없이 지정된 열 길이로 항목을 자릅니다. 참조 설명서 : 명령을 참조하십시오.

MSSQL은 항상 문자열의 자르기를 감지하고 STRING_RTRUNCATION 옵션이 존재하지 않습니다. 다음은 jTDS SAfeTest.testDataTruncException()의 발췌 부분입니다.

Statement stmt = con.createStatement(); 
if (!con.getMetaData().getDatabaseProductName().toLowerCase().startsWith("microsoft")) { 
    // By default Sybase will silently truncate strings, 
    // set an option to ensure that an exception is thrown. 
    stmt.execute("SET STRING_RTRUNCATION ON"); 
}