DELPHI 数据库操作类(工具类)
DELPHI 数据库连接类
做的时候目地是可以通过类的创建和释放进行数据库的短连接,在做服务端的时候每一个请求都通过类生成一个数据连接
- unit UnDm;
- interface
- uses
- SysUtils, Classes, Controls, Forms, Dialogs,
- ComCtrls, ExtCtrls, Menus, StdCtrls,
- ADODB,
- DB,inifiles;
- type
- TRecordResult = (RRError, RRZero, RROK);
- TDataStatus = (DsSel, DsEdit, DsAdd);
- type
- TDataConnection = class
- DataAdoConn: TADOConnection;
- qryTemp1: TADOQuery;
- qryTemp2: TADOQuery;
- qryTemp3: TADOQuery;
- qryTemp4: TADOQuery;
- private
- public
- constructor Create; overload;
- //连接数据库
- function DbConn: Boolean;
- //启动事物
- function AdoBeginTrans: Boolean;
- //回滚事物
- function AdoRollbackTrans: Boolean;
- //提交事物
- function AdoCommitTrans: Boolean;
- //
- Function GetOpenQuery(const sSql, sTitle: String; _AdoQry: TADOQuery; Is_View: Boolean = True): TRecordResult; overload;
- function UpdateSql(const sSql, sTitle: String; IsView: Boolean= True): TRecordResult;
- function GetAllUser: Integer;
- end;
- implementation
- uses Querypa;
- constructor TDataConnection.Create;
- var
- I:Integer;
- begin
- inherited;
- DataAdoConn:=TADOConnection.Create(nil);
- qryTemp1:=TADOQuery.Create(nil);
- qryTemp2:=TADOQuery.Create(nil);
- qryTemp3:=TADOQuery.Create(nil);
- qryTemp4:=TADOQuery.Create(nil);
- DataAdoConn.LoginPrompt:=False;
- qryTemp1.Connection:=DataAdoConn;
- qryTemp2.Connection:=DataAdoConn;
- qryTemp3.Connection:=DataAdoConn;
- qryTemp4.Connection:=DataAdoConn;
- end;
- function TDataConnection.DbConn: Boolean;
- const
- //sDbConn = 'Provider=OraOLEDB.Oracle.1;Password=%s;Persist Security Info=True;User ID=%s;Data Source=%s';
- sDbConn = 'Provider=OraOLEDB.Oracle.1;Password=%s;User ID=%s;Data Source=%s;Persist Security Info=True';
- var
- sUdlFile: String;
- ServerIni:TiniFile;
- SOURCE,USER,PASSWORD:string;
- sSql:string;
- begin
- //获得数据库连接串
- ServerIni := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'ServerInfor.Ini');
- SOURCE := ServerIni.ReadString('HIS', 'SOURCE', '');
- USER := ServerIni.ReadString('HIS', 'USER', '');
- PASSWORD := ServerIni.ReadString('HIS', 'PASSWORD', '');
- sSql := Format(sDbConn, [PASSWORD, USER, SOURCE]);
- Result := False;
- if DataAdoConn.Connected then
- DataAdoConn.Close;
- //连接数据库
- DataAdoConn.ConnectionString :=sSql; //'FILE NAME='+sUdlFile;
- Try
- DataAdoConn.Open;
- if not DataAdoConn.Connected then
- begin
- Result :=false;
- Exit;
- end
- else
- begin
- Result :=true;
- end;
- Except
- Result := False;
- Exit;
- end;
- end;
- function TDataConnection.AdoBeginTrans: Boolean;
- Var
- nResult: Integer;
- begin
- Result := False;
- Try
- nResult := DataAdoConn.BeginTrans;
- if nResult > then
- Result := True;
- except
- On E: Exception do
- Begin
- SaveError('启动事务', E.Message);
- end;
- end;
- end;
- function TDataConnection.AdoCommitTrans: Boolean;
- Var
- nResult: Integer;
- begin
- Result := False;
- Try
- DataAdoConn.CommitTrans;
- Result := True;
- except
- On E: Exception do
- Begin
- SaveError('提交事务', E.Message);
- end;
- end;
- end;
- function TDataConnection.AdoRollbackTrans: Boolean;
- Var
- nResult: Integer;
- begin
- Result := False;
- Try
- DataAdoConn.RollbackTrans;
- Result:True;
- except
- On E: Exception do
- Begin
- SaveError('回滚事务', E.Message);
- end;
- end;
- end;
- /// <summary>
- /// 更新数据库涵数 插入或修改
- /// sSql SQL语句
- /// sTitle执行标题
- /// IsView出错后是否弹出消息
- /// </summary>
- function TDataConnection.UpdateSql(const sSql, sTitle: String;
- IsView: Boolean): TRecordResult;
- Var
- nResult: Integer;
- AdoQry:TADOQuery;
- begin
- AdoQry:=TADOQuery.Create(nil);
- AdoQry.Connection:= DataAdoConn;
- Result := RRError;
- With AdoQry do
- Begin
- Close;
- SQL.Text := sSql;
- Try
- nResult := ExecSQL;
- if nResult = then
- Result := RRZero
- else
- Result := RROK;
- Except
- on E: Exception do
- Begin
- SaveError(sTitle, sSql+ ## +E.Message);
- MsgShow(E.Message, );
- Exit;
- end;
- end;
- end;
- if Result = RRZero then
- Begin
- SaveError(sTitle, sSql+ ## +'执行没有返回正确结果!');
- if IsView then
- MsgShow('执行没有返回正确结果!', );
- Exit;
- end;
- end;
- /// <summary>
- /// 查询数据库语句
- /// sSql SQL语句
- /// sTitle执行标题
- /// _AdoQry Adoquery控件
- /// IsView出错后是否弹出消息
- /// </summary>
- function TDataConnection.GetOpenQuery(const sSql, sTitle: String; _AdoQry: TADOQuery;
- Is_View: Boolean): TRecordResult;
- begin
- Result := RRError;
- With _AdoQry do
- Begin
- Close;
- SQL.Text := sSql;
- Try
- Open;
- if IsEmpty then
- Result := RRZero;
- if Not IsEmpty then
- Result := RROK;
- Except
- on E: Exception do
- Begin
- SaveError(sTitle, sSql+ ## +E.Message);
- MsgShow(E.Message, );
- Exit;
- end;
- end;
- end;
- if (Result = RRZero) and Is_View then
- Begin
- SaveError(sTitle, sSql+ ## + sTitle);
- MsgShow(sTitle, );
- end;
- end;
- function TDataConnection.GetAllUser: Integer;
- begin
- with qryTemp1 do
- begin
- Close;
- SQL.Text := 'SELECT USERID, name From T_USERS';
- Open;
- end;
- Result := qryTemp1.RecordCount;
- end;
- end.
- ————————————————
声明
- var
- dm: TDataConnection;
创建
- //首选连接服务器数据库
- dm:=TDataConnection.Create;
- if not dm.DbConn then
- begin
- MsgShow('服务器数据库连接失败,无法启动服务',);
- dm.Free;
- Exit;
- end;
执行SQL语句
- strSQL:=' UPDATE A SET AA=''1''';
- DM.UpdateSql(strSQL,'更新数据库',false);
查询数据库
- strSQL:=' SELECT * FROM A';
- DM.GetOpenQuery(strSQL,'更新数据库',ADOQUERY1,false);
事务就添加TRY后在里面增加事务就可以
DELPHI 数据库操作类(工具类)的更多相关文章
- 自己封装的poi操作Excel工具类
自己封装的poi操作Excel工具类 在上一篇文章<使用poi读写Excel>中分享了一下poi操作Excel的简单示例,这次要分享一下我封装的一个Excel操作的工具类. 该工具类主要完 ...
- Redis操作Set工具类封装,Java Redis Set命令封装
Redis操作Set工具类封装,Java Redis Set命令封装 >>>>>>>>>>>>>>>>& ...
- Redis操作List工具类封装,Java Redis List命令封装
Redis操作List工具类封装,Java Redis List命令封装 >>>>>>>>>>>>>>>> ...
- Redis操作Hash工具类封装,Redis工具类封装
Redis操作Hash工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>> ...
- Redis操作字符串工具类封装,Redis工具类封装
Redis操作字符串工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>>& ...
- java中文件操作的工具类
代码: package com.lky.pojo; import java.io.BufferedReader; import java.io.BufferedWriter; import java. ...
- Java操作Redis工具类
依赖 jar 包 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis< ...
- ASP.NET实现二维码 ASP.Net上传文件 SQL基础语法 C# 动态创建数据库三(MySQL) Net Core 实现谷歌翻译ApI 免费版 C#发布和调试WebService ajax调用WebService实现数据库操作 C# 实体类转json数据过滤掉字段为null的字段
ASP.NET实现二维码 using System;using System.Collections.Generic;using System.Drawing;using System.Linq;us ...
- 自制php操作mysql工具类(DB.class.php)
DB.class.php <?php class DB{ //主机地址 var $host; //用户名 var $username; //密码 var $password; //数据库名 va ...
- java操作excel 工具类
java操作excel 可参考https://blog.csdn.net/xunwei0303/article/details/53213130 直接上代码: 一.java生成excel文件: pac ...
随机推荐
- Java设计模式的6大原则
Java设计模式的6大原则 1.开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭.在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果.简单来 ...
- Kubernetes 学习15 kubernetes 认证及serviceaccount
一.概述 1.通过此前描述可以知道k8s是以后运行我们生产环境中重要应用程序的尤其是无状态程序的一个非常重要的平台.这里面能托管一些核心应用以及核心数据,很显然对于k8s对应接口的访问不是任何人都可以 ...
- nowcoder73E 白兔的刁难 单位根反演+NTT
感觉很套路? #include <bits/stdc++.h> #define ll long long #define setIO(s) freopen(s".in" ...
- Dominating Patterns (AC 自动鸡模版题, 出现次数最多的子串)
传送门 题意: 给你n个模式串, 再给你一个 文本串,问模式串在文本串中出现次数最多是多少. 出现次数最多的模式串有哪些. 解: 模版题. #include <bits/stdc++.h> ...
- 2017.10.3 国庆清北 D3T3 解迷游戏
题目描述 LYK进了一家古董店,它很想买其中的一幅画.但它带的钱不够买这幅画. 幸运的是,老板正在研究一个问题,他表示如果LYK能帮他解出这个问题的话,就把这幅画送给它. 老板有一个n*m的矩阵,他想 ...
- spark,hadoop集群安装注意
安装步骤严格参看厦门大学数据实验室教程 Spark 2.0分布式集群环境搭建(Python版) 安装Hadoop并搭建好Hadoop集群环境 遇到的问题 1.ubuntu 安装后升级.python是3 ...
- AtCoder Grand Contest 020 题解
传送门 怎么又是\(tourist\)神仙的题-- \(A\) 咕咕 int n,a,b; int main(){ scanf("%d%d%d",&n,&a,&am ...
- Pytest权威教程21-API参考-07-配置选项(Configuration Options)
目录 配置选项(Configuration Options) addopts cache_dir confcutdir console_output_style doctest_encoding do ...
- 「雅礼集训 2017 Day10」拍苍蝇
传送门 Description 有一天,小 A 的母亲对他家里的卫生状况非常不满意,他的房间里有非常多的苍蝇.在母亲的威逼利诱下,小 A 拿起了苍蝇拍去消灭家里的苍蝇.然而,小 A 以前从来没有亲手消 ...
- js off 缓动动画
动画也有很多种,一起来学习,缓动动画吧 缓动动画 1.缓动动画原理=盒子位置+(目标盒子位置-现在盒子位置)/10 2.步长越来越小 3.让步长越来越小的公式 步长=(目标位置-本身位置)/ ...