使用Unidac内置连接池

第一步:

   放一个TUniconnection并设置相关属性

之后直接使用TUniconnection对象即可

 

跟踪unidac源码uni单元1540行中可以看到

Connect方法调用CreateIConnection

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
procedure TUniConnection.CreateIConnection;
var
  Connection: TCRConnection;
  ConnectionParameters: TCRConnectionParameters;
 
  procedure SetSpecificObjectProps(SetAllProps: boolean);
  begin
    FProvider.SetObjectProps(Connection, FSpecificOptions.Values, SetAllProps);
    FSpecificOptions.IsModified := False;
  end;
 
begin
  CheckProvider;
 
  Connection := FIConnection;
 
  if Connection = nil then begin
   <span style="color: #ff0000;"><strong> if Pooling and FProvider.IsPoolingSupported then begin</strong></span>
      ConnectionParameters := FProvider.GetConnectionParametersClass.Create;
      try
        ConnectionParameters.MinPoolSize := PoolingOptions.MinPoolSize;
        ConnectionParameters.MaxPoolSize := PoolingOptions.MaxPoolSize;
        ConnectionParameters.ConnectionLifeTime := PoolingOptions.ConnectionLifetime;
        ConnectionParameters.Validate := PoolingOptions.Validate;
        ConnectionParameters.Username := Username;
        ConnectionParameters.Password := Password;
        ConnectionParameters.Server := Server;
        ConnectionParameters.IOHandler := FIOHandler;
        ConnectionParameters.OnError := DoError;
        if FProvider.IsDatabaseSupported then //upd1
          ConnectionParameters.SetProp(prDatabase, FDatabase);
        if FProvider.IsPortSupported then
          ConnectionParameters.SetProp(prPort, Port);
 
        FProvider.SetObjectProps(ConnectionParameters, SpecificOptions, True);
 
      <span style="color: #ff0000;">  Connection := FProvider.GetConnectionPoolingManagerClass.GetConnection(
          ConnectionParameters, TUniSQLMonitor);</span>
      finally
        ConnectionParameters.Free;
      end;
    end
    else begin
      Connection := GetIConnectionClass.Create;
      Connection.IOHandler := FIOHandler;
      if FProvider.IsDatabaseSupported then
        Connection.SetProp(prDatabase, FDatabase);
      if FProvider.IsPortSupported then
        Connection.SetProp(prPort, Port);
    end;
 
    Connection.SetProp(prDisconnectedMode, Options.DisconnectedMode);
    Connection.SetProp(prEnableBCD, Options.EnableBCD);
  {$IFDEF VER6P}
  {$IFNDEF FPC}
    Connection.SetProp(prEnableFMTBCD, Options.EnableFMTBCD);
  {$ENDIF}
  {$ENDIF}
    Connection.SetProp(prDefaultSortType, Variant(Options.DefaultSortType));
    // if connection is just created we need to set all options
    SetSpecificObjectProps(True);
 
    SetIConnection(Connection);
  end;
 
  if FSpecificOptions.IsModified then
    SetSpecificObjectProps(False);
end;

http://www.cnblogs.com/pengshaomin/p/4126662.html

posted @ 2016-03-25 21:31  findumars  Views(993)  Comments(0Edit  收藏  举报