WinPgAP-SetUp之五_如何自動建DB的DSN項 |
答題得分者是:kevin2004
|
limary
初階會員 發表:41 回覆:109 積分:30 註冊:2007-01-11 發送簡訊給我 |
|
kevin2004
資深會員 發表:18 回覆:463 積分:416 註冊:2005-05-29 發送簡訊給我 |
|
kevin2004
資深會員 發表:18 回覆:463 積分:416 註冊:2005-05-29 發送簡訊給我 |
|
kevin2004
資深會員 發表:18 回覆:463 積分:416 註冊:2005-05-29 發送簡訊給我 |
|
kevin2004
資深會員 發表:18 回覆:463 積分:416 註冊:2005-05-29 發送簡訊給我 |
function TODBCObject.IsDsnExist(ThisDSNName : String ) : Boolean ;
begin Result:=(Reg_KeyExists(ODBC_ROOT_KEY,ODBC_DSN_DETAIL_KEY '\' ThisDSNName))or (RegItemIsExist(ODBC_ROOT_KEY,ODBC_DSN_REGIST_KEY,ThisDSNName)); end ; function TODBCObject.KillThisDsnOK ( ThisDSNName : String ) : Boolean ; begin Result := (Reg_DeleteKeyOK(ODBC_ROOT_KEY,ODBC_DSN_DETAIL_KEY '\' ThisDSNName)) or (Reg_DeleteValueOK(ODBC_ROOT_KEY,ODBC_DSN_REGIST_KEY,ThisDSNName)) ; end ; Function TPostgreSQLObject.CreateMasterDbDsnOK ( ThisDSNName : string ; // 如PostgresDB_PG ThisServerNameOrIP : string ; // 如192.168.1.110 ThisPort : string = '5432' ) : Boolean ; begin Result := CreateDbDsnOK ( ThisDSNName , // 如MyToolSDB_PG 'postgres' , // postgreSQL主DB固定為postgres ThisServerNameOrIP , // 如192.168.1.110 ThisPort ) ; end ; Function TPostgreSQLObject.CreateDbDsnOK ( ThisDSNName : string ; // 如MyToolSDB_PG ThisDataBase : string ; // 如MyToolSDB ThisServerNameOrIP : string ; // 如192.168.1.110 ThisPort : string = '5432' ) : Boolean ; var Reg : TRegistry ; begin Result := False ; // ============================================================ // 安全起見,要清除舊的DSN記錄。先殺與此DSN同名的舊Key // ============================================================ if FoundDbDsn(ThisDSNName) then if Not AP_GetODBCObject.KillThisDsnOK ( ThisDSNName ) then begin File_Msg('通知閣下:清除舊有[' ThisDSNName ']失敗。將會自動覆寫到新值'); end ; try // ============================================================ // 先建較少項目者 // ============================================================ try Reg := TRegistry.Create ; Reg.RootKey := ODBC_ROOT_KEY ; if Reg.OpenKey ( ODBC_DSN_REGIST_KEY , True ) then // true表如此key不存在時,先CreateKey begin Reg.WriteString ( ThisDSNName , 'PostgreSQL ANSI' ) ; Result := True ; end else Result := False ; finally Reg.CloseKey ; Reg.Free ; end ; // ============================================================ // 再建較多項目者 // ============================================================ try Reg := TRegistry.Create ; Reg.RootKey := ODBC_ROOT_KEY ; if Reg.OpenKey ( ODBC_DSN_DETAIL_KEY '\' ThisDSNName , True ) then // true表如此key不存在時,先CreateKey begin Reg.WriteString ( 'AB' , '10' ) ; Reg.WriteString ( 'BI' , '0') ; Reg.WriteString ( 'BoolsAsChar' , '1') ; Reg.WriteString ( 'ByteaAsLongVarBinary', '1') ; Reg.WriteString ( 'BytesAsLongVarBinary', '1') ; Reg.WriteString ( 'CancelAsFreeStmt' , '0') ; Reg.WriteString ( 'CommLog' , '0') ; Reg.WriteString ( 'ConnSettings' , '') ; Reg.WriteString ( 'Database' , ThisDataBase ) ; Reg.WriteString ( 'DeBug' , '0') ; Reg.WriteString ( 'Description' , '') ; Reg.WriteString ( 'DisallowPremature' , '0') ; Reg.WriteString ( 'Driver' , 'C:\Program Files\psqlODBC\0802\bin\psqlodbc30a.dll') ; Reg.WriteString ( 'ExtraSysTablePrefixes', 'dd_;') ; Reg.WriteString ( 'FakeOidIndex' , '0') ; Reg.WriteString ( 'Fetch' , '100') ; Reg.WriteString ( 'Ksqo' , '1') ; Reg.WriteString ( 'LFConversion' , '1') ; Reg.WriteString ( 'LowerCaseIdentifier' , '0') ; Reg.WriteString ( 'MaxLongVarcharSize' , '8190') ; Reg.WriteString ( 'MaxVarcharSize' , '255') ; Reg.WriteString ( 'Optimizer' , '1') ; Reg.WriteString ( 'Parse' , '0') ; Reg.WriteString ( 'Password' , '') ; Reg.WriteString ( 'Port' , ThisPort ) ; Reg.WriteString ( 'Protocol' , '7.4-1') ; Reg.WriteString ( 'ReadOnly' , 'p') ; Reg.WriteString ( 'RowVersioning' , '0') ; Reg.WriteString ( 'Servername' , ThisServerNameOrIP ) ; Reg.WriteString ( 'ShowOidColumn' , '0') ; Reg.WriteString ( 'ShowSystemTables' , '0') ; Reg.WriteString ( 'SSLMode' , 'disable') ; Reg.WriteString ( 'TextAsLongVarchar' , '1') ; Reg.WriteString ( 'TrueIsMinus1' , '0') ; Reg.WriteString ( 'UID' , '') ; Reg.WriteString ( 'UniqueIndex' , '1') ; Reg.WriteString ( 'UnknownsAsLongVarchar' , '0') ; Reg.WriteString ( 'UnknownSizes' , '0') ; Reg.WriteString ( 'UpdatableCursors' , '1') ; Reg.WriteString ( 'UseDeclareFetch' , '0') ; Reg.WriteString ( 'Username' , '') ; Reg.WriteString ( 'UseServerSidePrepare' , '0') ; Reg.WriteString ( 'XaOpt' , '1') ; Result := True ; end else Result := False ; Finally Reg.CloseKey ; Reg.Free ; end ; except Result := False ; end ; end ;
------
Kevin |
limary
初階會員 發表:41 回覆:109 積分:30 註冊:2007-01-11 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |