• delphi 版 sqlHelper第二版


      1 {
      2   odbc操作sqlite帮助类
      3   author:yywang
      4   date:2013-5-15
      5 }
      6 unit CommUtils;
      7 
      8 interface
      9 
     10 uses
     11   SysUtils, Windows, ActiveX, DB, ADODB, Generics.Collections;
     12 
     13 type
     14   TParameterMap = class
     15 
     16   private
     17     thisKey: string;
     18     thisValue: Variant;
     19     thisDataType: TDataType;
     20     thisSize: Integer;
     21   public
     22     constructor Create(key: string; value: Variant); overload;
     23     constructor Create(key: string; value: Variant; dataType: TFieldType;
     24       size: Integer); overload;
     25 
     26     function GetKey: string;
     27     function GetValue: Variant;
     28     function GetDataType: TDataType;
     29     function GetSize: Integer;
     30 
     31     procedure SetKey(key: string);
     32     procedure SetValue(value: Variant);
     33     procedure SetDataType(dataType: TDataType);
     34     procedure SetSize(size: Integer);
     35 
     36   published
     37     property key: string read GetKey write SetKey;
     38     property value: Variant read GetValue write SetValue;
     39     property dataType: TDataType read GetDataType write SetDataType;
     40     property size: Integer read GetSize write SetSize;
     41 
     42   end;
     43 
     44   TSqlHelper = class
     45 
     46   public
     47     { 执行单个插入更新删除sql }
     48     function ExecSQL(sql: string): Integer; overload;
     49 
     50     { 执行单个插入更新删除sql 参数化 }
     51     function ExceSQL(sql: string; parms: TList<TParameterMap>): Integer;
     52       overload;
     53 
     54     { 执行批量的sql插入更新删除 }
     55     function ButchExecSQL(sqls: TList<string>): Integer;
     56 
     57     { 获取单个值得查询 }
     58     function GetSingle(sql: string): Variant; overload;
     59 
     60     { 获取单个值得查询 参数化 }
     61     function GetSingle(sql: string; parms: TList<TParameterMap>): Variant;
     62       overload;
     63 
     64     { 获取一个连接 }
     65     function GetConnection(): TADOConnection;
     66 
     67     { 获取一个查询query对象 }
     68     function GetQuery(sql: string; connection: TADOConnection): TADOQuery;
     69       overload;
     70 
     71     { 获取一个query对象,参数化 }
     72     function GetQuery(sql: string; parms: TList<TParameterMap>;
     73       connection: TADOConnection): TADOQuery; overload;
     74 
     75     { 关闭连接 }
     76     procedure CloseConnection(conn: TADOConnection);
     77 
     78     { 关闭Query }
     79     procedure CloseQuery(query: TADOQuery);
     80 
     81     { 关闭连接及Query }
     82     procedure Close(query: TADOQuery; connection: TADOConnection);
     83 
     84   private
     85     { 私有 }
     86 
     87   end;
     88 
     89 implementation
     90 
     91 const
     92   constr: string =
     93     'Provider=MSDASQL.1;Persist Security Info=False;Data Source=SQLite3 Datasource';
     94 
     95 function TSqlHelper.ExecSQL(sql: string): Integer;
     96 begin
     97   Result := ExceSQL(sql, nil);
     98 end;
     99 
    100 function TSqlHelper.ExceSQL(sql: string; parms: TList<TParameterMap>): Integer;
    101 
    102 var
    103   command: TADOCommand;
    104   conn: TADOConnection;
    105   parm: TParameterMap;
    106 begin
    107   try
    108     conn := GetConnection;
    109     command := TADOCommand.Create(nil);
    110     with command do
    111     begin
    112       connection := conn;
    113       CommandText := sql;
    114       if (parms <> nil) and (parms.Count > 0) then
    115       begin
    116         for parm in parms do
    117         begin
    118           Parameters.FindParam(parm.key).value := parm.value;
    119           if (parm.size <> -1) then
    120           begin
    121             Parameters.FindParam(parm.key).dataType := parm.dataType;
    122             Parameters.FindParam(parm.key).size := parm.size;
    123           end;
    124         end;
    125       end;
    126       Execute;
    127     end;
    128     Result := 1;
    129   finally
    130     command.Cancel;
    131     CloseConnection(conn);
    132   end;
    133 end;
    134 
    135 function TSqlHelper.ButchExecSQL(sqls: TList<string>): Integer;
    136 var
    137   command: TADOCommand;
    138   sql: string;
    139   conn: TADOConnection;
    140 begin
    141   try
    142     try
    143       conn := GetConnection;
    144       command := TADOCommand.Create(nil);
    145       conn.BeginTrans;
    146       with command do
    147       begin
    148         connection := conn;
    149         for sql in sqls do
    150         begin
    151           if sql <> '' then
    152           begin
    153             CommandText := sql;
    154             Execute;
    155           end;
    156         end;
    157       end;
    158       Result := 1;
    159       conn.CommitTrans;
    160     except
    161       Result := 0;
    162       conn.RollbackTrans;
    163     end;
    164   finally
    165     command.Cancel;
    166     CloseConnection(conn);
    167   end;
    168 end;
    169 
    170 function TSqlHelper.GetSingle(sql: string): Variant;
    171 begin
    172   Result := GetSingle(sql, nil);
    173 end;
    174 
    175 function TSqlHelper.GetSingle(sql: string; parms: TList<TParameterMap>)
    176   : Variant;
    177 var
    178   query: TADOQuery;
    179   conn: TADOConnection;
    180 begin
    181   try
    182     conn := GetConnection;
    183     query := GetQuery(sql, parms, conn);
    184     if query.RecordCount < 0 then
    185       Result := '';
    186     query.First;
    187     Result := query.Fields.Fields[0].AsVariant;
    188   finally
    189     CloseQuery(query);
    190     CloseConnection(conn);
    191   end;
    192 end;
    193 
    194 function TSqlHelper.GetQuery(sql: string;
    195   connection: TADOConnection): TADOQuery;
    196 begin
    197   Result := GetQuery(sql, nil, connection);
    198 end;
    199 
    200 function TSqlHelper.GetQuery(sql: string; parms: TList<TParameterMap>;
    201   connection: TADOConnection): TADOQuery;
    202 var
    203   query: TADOQuery;
    204   parm: TParameterMap;
    205 begin
    206   query := TADOQuery.Create(nil);
    207   query.connection := connection;
    208   query.sql.Add(sql);
    209   if (parms <> nil) and (parms.Count > 0) then
    210   begin
    211     for parm in parms do
    212     begin
    213       query.Parameters.FindParam(parm.key).value := parm.value;
    214       if (parm.size <> -1) then
    215       begin
    216         query.Parameters.FindParam(parm.key).dataType := parm.dataType;
    217         query.Parameters.FindParam(parm.key).size := parm.size;
    218       end;
    219     end;
    220   end;
    221   query.Open;
    222   Result := query;
    223 end;
    224 
    225 function TSqlHelper.GetConnection: TADOConnection;
    226 var
    227   conn: TADOConnection;
    228 begin
    229   conn := TADOConnection.Create(nil);
    230   conn.ConnectionString := constr;
    231   conn.Open();
    232   Result := conn;
    233 end;
    234 
    235 procedure TSqlHelper.CloseQuery(query: TADOQuery);
    236 begin
    237   { if query.Active then }
    238   query.Close;
    239 end;
    240 
    241 procedure TSqlHelper.CloseConnection(conn: TADOConnection);
    242 begin
    243   if conn.Connected then
    244     conn.Close;
    245 end;
    246 
    247 procedure TSqlHelper.Close(query: TADOQuery; connection: TADOConnection);
    248 begin
    249   if query <> nil then
    250     CloseQuery(query);
    251   if connection <> nil then
    252     CloseConnection(connection);
    253 end;
    254 
    255 function TParameterMap.GetKey;
    256 begin
    257   Result := thisKey;
    258 end;
    259 
    260 function TParameterMap.GetValue;
    261 begin
    262   Result := thisValue;
    263 end;
    264 
    265 function TParameterMap.GetDataType;
    266 begin
    267   Result := thisDataType;
    268 end;
    269 
    270 function TParameterMap.GetSize;
    271 begin
    272   Result := thisSize;
    273 end;
    274 
    275 procedure TParameterMap.SetKey(key: string);
    276 begin
    277   thisKey := key;
    278 end;
    279 
    280 procedure TParameterMap.SetValue(value: Variant);
    281 begin
    282   thisValue := value;
    283 end;
    284 
    285 procedure TParameterMap.SetDataType(dataType: TFieldType);
    286 begin
    287   thisDataType := dataType;
    288 end;
    289 
    290 procedure TParameterMap.SetSize(size: Integer);
    291 begin
    292   thisSize := size;
    293 end;
    294 
    295 constructor TParameterMap.Create(key: string; value: Variant);
    296 begin
    297   thisValue := value;
    298   thisKey := key;
    299   thisDataType := ftUnknown;
    300   thisSize := -1;
    301 end;
    302 
    303 constructor TParameterMap.Create(key: string; value: Variant;
    304   dataType: TFieldType; size: Integer);
    305 begin
    306   thisKey := key;
    307   thisValue := value;
    308   thisDataType := dataType;
    309   thisSize := size;
    310 end;
    311 
    312 initialization
    313 
    314 CoInitialize(nil);
    315 
    316 finalization
    317 
    318 CoUnInitialize;
    319 
    320 end.
    ----转载请注明出处http://www.cnblogs.com/JerryWang1991/ 谢谢!
  • 相关阅读:
    解决genemotion模拟器冲突导致的Android Studio无法启动ADB的问题
    Google Chrome Resize Plugin
    IntelliJ IDEA + Maven创建Java Web项目
    iOS开发
    Java对象和XML的相互转换化
    使用SpringMVC的@Validated注解验证的实现
    Spring @Validated 使用
    @validated注解实现
    springmvc的@Validated注解使用
    C#调用C++编写的DLL
  • 原文地址:https://www.cnblogs.com/JerryWang1991/p/3081281.html
Copyright © 2020-2023  润新知