2014-10-28 4 views
3

SQLite에 액세스하기 위해 FireDAC과 함께 Delphi XE7을 사용하고 있습니다.SQLite FireDAC 후행 공백

TEXT 필드에 데이터를 넣으면 후행 공백 또는 # 0 문자가 잘립니다.

SQLite 또는 FireDAC에서 후행 공백을 유지하기 위해 변경할 수있는 것이 있습니까?

// The trailing spaces after Command don't come back from SQLite. 
fFireDACQuery.ParamByName(kSQLFieldScriptCommands).AsString := 'Command   '; 
+1

에서 ['FormatOptions.StrsTrim'] (http://docwiki.embarcadero.com/Libraries/XE7/en/FireDAC. Stan.Option.TFDFormatOptions.StrsTrim) 속성을 False로 설정합니다. – TLama

+0

P. 'StrsTrim' 속성의 초기 설명과 혼동하지 마십시오. * "SQLite의 경우,이 속성은 ftMemo, ftWideMemo, ftString, ftWideString, ftFixedChar 및 ftFixedWideChar를 포함한 모든 문자열 열에 적용됩니다."* 이는 귀하의 경우입니다. – TLama

+0

좋은 답변처럼 들리지만, 아래의 "답변"아래에 댓글로 게시하는 이유는 무엇입니까? –

답변

2

StrsTrim 속성을 해제하십시오.

TFDFormatOptions.StrsTrim

제어 문자열 값과 스페이스 바이너리 값으로부터 제로 바이트 후행 제거 :이 속성으로서 기술된다.

그리고 텍스트가 아닌 바이너리 데이터를 저장하려고합니다. 이것이 맞으면 필드 데이터 형식을 더 잘 정의하십시오. 길이가 255 바이트 인 고정 길이 이진 문자열의 경우 BINARY[255] (255는 최대 길이 인 ShortString)입니다. 그런 다음 이런 식으로 접근 것 같은 필드

매개 변수 값 : 설정

var 
    Data: RawByteString; 
begin 
    ReadByteDataSomehow(Data); 

    FDQuery.FormatOptions.StrsTrim := False; 
    FDQuery.SQL.Text := 'INSERT INTO MyTable (MyBinaryField) VALUES (:MyBinaryData)'; 
    FDQuery.ParamByName('MyBinaryData').AsByteStr := Data; 
    FDQuery.ExecSQL; 
end;