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=1 且 MaxLongVarcharSize=-4,
如果在匯入欄位時, Postgres 的 Text 欄位仍轉為 TWideStringField, 或在將
TADOTable/TADOQuery 的 Active 屬性設為 true 時發生錯誤, 可將這個欄位移除, 再重新匯入, Delphi
就會正確地將 Postgres 的 Text 欄位轉為 TMemoField 了. (資料來源: http://psqlodbc.projects.postgresql.org/config.html)
沒有留言:
張貼留言