2012-08-01

【Postgres】ODBC 連結字串

Driver={PostgreSQL UNICODE};Server=主機IP;Port=5432;Database=資料庫名;Uid=資料庫使用者;Pwd=密碼;
其 中 Driver={...}, {} 大括弧內的文字要看安裝在您電腦的 ProgreSQL 版本, 請至 控制台 --> 系統管理工具 --> 資料來源(ODBC) --> "驅動程式" 頁籤內 就可看到您安裝的 PostgreSQL ODBC driver.

當在 Delphi 的 TADOConnection.ConnectionString 輸入上述設定時, 並將 TADOConnection.Connected 屬性設為 true 時, Delphi 會再幫您補上其他的設定值, 如下:

Provider=MSDASQL.1;Extended Properties="DRIVER={postgresql unicode};DATABASE=schman;SERVER=localhost;PORT=5432;UID=postgres;PWD=mis0330;SSLmode=disable;ReadOnly=0;Protocol=8.4;FakeOidIndex=0;ShowOidColumn=0;RowVersioning=0;ShowSystemTables=0;ConnSettings=;Fetch=100;Socket=4096;UnknownSizes=0;MaxVarcharSize=255;MaxLongVarcharSize=-4;Debug=0;CommLog=0;Optimizer=0;Ksqo=1;UseDeclareFetch=0;TextAsLongVarchar=1;UnknownsAsLongVarchar=0;BoolsAsChar=1;Parse=0;CancelAsFreeStmt=0;ExtraSysTablePrefixes=dd_;LFConversion=1;UpdatableCursors=1;DisallowPremature=0;TrueIsMinus1=0;BI=0;ByteaAsLongVarBinary=1;UseServerSidePrepare=0;LowerCaseIdentifier=0;XaOpt=1"


ByteaAsLongVarBinary
如 果您的程式有用到 Blobfield 儲存 binary 檔(如圖片, 影片...等), 則這個設定值要為 1, 不然在您匯入欄位至 TADOQuery 或 TADOTable 時, Delphi 會將 Postgres 的 Bytea 欄位轉為 VarBytesField, 而不是 BlobField.

TextAsLongVarchar
本選項要搭配 MaxLongVarcharSize 使用, 設為 TextAsLongVarchar=1MaxLongVarcharSize=-4, 如果在匯入欄位時, Postgres 的 Text 欄位仍轉為 TWideStringField, 或在將 TADOTable/TADOQuery 的 Active 屬性設為 true 時發生錯誤, 可將這個欄位移除, 再重新匯入, Delphi 就會正確地將 Postgres 的 Text 欄位轉為 TMemoField 了. (資料來源: http://psqlodbc.projects.postgresql.org/config.html)

沒有留言:

張貼留言