DBA组件---ADO数据库编程利器

MyDAC 5.00.1.7 完整源码:Delphi/C++Builder 下免依赖直连 MySQL 的开发套件 提供 MyDAC v5.00.1.7 全量源代码,支持 Delphi、C++Builder、Delphi for .NET 和 Kylix 环境,实现原生级 MySQL 数据库接入。无需 BDE、ODBC 或第三方运行时依赖,既可通过纯 TCP/IP 协议直连 MySQL 服务端,也兼容官方 libmysql.dll 客户端库。内置 TMyConnection、TMyQuery、TMyTable 等核心可视化组件,覆盖连接管理、SQL 执行、事务控制、数据导入导出(TMyLoader/TMyDump)、结构 阅读详情

DBA组件---ADO数据库编程利器

一、何谓DBA
    DBA即Database Assistant,其实就是数据库编程助手。它是完全采用接口、OO理念用VB6.0编译的DLL COM组件。
    它的好处在于使数据库的编程和维护都仅仅在表现层,便于数据库字段的反复增减,修改(客户需求无常),使代码更为规范,
    也使得程序的总体代码减少,运行效率提高。

二、DBA的功能
    DBA主要有四大特色功能:
    1、自动生成对数据库中单个表的新增、更新SQL语句,并完成其操作
    2、提供对外扩展的接口ifaceDbConnectionBuilder,可以实现对任何数据库的操作(只要ADO允许)
    3、提供安全可靠、简单易用的用户、角色、权限访问体系
    4、提供对字串的加密、解密,支持中文密码,加密长度可以是32位、64位、128位

三、DBA的使用
          A〉配置INI文件
       DBA与数据库的连接,依赖于INI文件的配置。要求在项目的当前路径下建立与执行文件同名,且节名也与执行文件同名的INI文件。
       如:执行文件为myPrj.exe,则INI文件必须为myPrj.ini,且与myPrj.exe位于相同路径。使用默认连接时,INI文件中必须包含
       以下节(以SQL Server配置为例):
       '********* myPrj.ini *********
       [myPrj]
       SpecialIniFilePath=

 ServerName=AppSrv
       DatabaseName=AppDb
       UserID=07AIQY6Vow5xph2075bjrz7uPX4WOG7767CKS08Tqy3vnf5013dlt19sRZ2UME67
       UserPassword=066EMU2Zs91tld929E3fnv3yT80SKC67667GOW4Xu7zrjb49653hpx5wV6YQIA77
       Timeout=100

 如果是Access,则INI文件配置应如下示
       '********* myPrj.ini *********
       [myPrj]
       SpecialIniFilePath=

 DatabaseName=d:/db1.mdb
       DatabasePassword=
       SystemDatabase=
       UserID=Admin
       UserPassword=
       Timeout=100

 如果想自由配置节内容如下也行,此时你将不能使用默认方式打开数据库,而必须实现ifaceDbConnectionBuilder接口,
       然后以指定方式打开数据库,详见C(2)所叙,这也是打开其它数据库的方法!
       '********* myPrj.ini *********
       [myPrj]
       SpecialIniFilePath=

 服务器=AppSrv
       数据库=AppDb
       用户=07AIQY6Vow5xph2075bjrz7uPX4WOG7767CKS08Tqy3vnf5013dlt19sRZ2UME67
       密码=066EMU2Zs91tld929E3fnv3yT80SKC67667GOW4Xu7zrjb49653hpx5wV6YQIA77
       超时=100

    B〉DBA注册、引用
       DBA是用VB6.0编写DLL COM组件,所以需先将DBA注册然后再引用到项目工程中(如是VB6项目则可直接引用,VB6会自动完成注册)

    C〉DBA四大功能的使用
       以下描述均以SQL Server为例,为此你需要建立最基本的数据库表,请在SQL查询分析器运行附件中的脚本CreateDbTable.sql,
       下面就四大功能的使用,作简要的说明:
       1、自动生成对数据库中单个表的新增、更新SQL语句,并完成其操作
          现假定对数据库表sys_User实现新增、更新操作,界面控件从略,其规范代码如下
          '代码是用自己写的代码生成器生成,你也自己写一个,编程就会变得轻松美妙。。。

  1. '初始化
  2. Private Sub IniFieldValue(dt As ifaceDbTable)
  3.     dt.AddField "UserID", Character, "", 25
  4.     dt.AddField "UserName", Character, "", 50
  5.     dt.AddField "UserPwd", Character, "", 50
  6.     dt.AddField "LastModifyDate", Character, "", 8
  7. End Sub
  8. '设定DbTable字段值
  9. Private Sub SetFieldValue(dt As ifaceDbTable)
  10.     dt.AddField "UserID", Character, Me.txtUserID.Text, 25
  11.     dt.AddField "UserName", Character, Me.txtUserName.Text, 50
  12.     dt.AddField "UserPwd", Character, Me.txtUserPwd.Text, 50
  13.     dt.AddField "LastModifyDate", Character, Me.txtLastModifyDate.Text, 8
  14. End Sub
  15. '获取DbTable字段值,并赋值给界面控件
  16. Private Sub GetFieldValue(dt As ifaceDbTable)
  17.     Me.txtUserID.Text = dt.Fields("UserID").FieldValue
  18.     Me.txtUserName.Text = dt.Fields("UserName").FieldValue
  19.     Me.txtUserPwd.Text = dt.Fields("UserPwd").FieldValue
  20.     Me.txtLastModifyDate.Text = dt.Fields("LastModifyDate").FieldValue
  21. End Sub
  22. '新增
  23. Private Sub btnInsertData_Click()
  24.     Dim dt As Dim dt As ifaceDbTable
  25.     Set dt = New clsDbTable
  26.     dt.TableName = "sys_User"
  27.     '请用主键字段名替换PrimaryKeyName
  28.     dt.AddPrimaryKey "SysID", Anyinteger, 0, 4
  29.     SetFieldValue dt
  30.     Dim b As Boolean
  31.     Dim dba As ifaceDBA
  32.     Set dba = New clsDBA
  33.     dba.OpenConnectionByDbType
  34.     b = dba.InsertDataRow(dt)
  35.     dba.Dispose
  36.     Set dba = Nothing
  37.     Set dt = Nothing
  38. End Sub
  39. '更新
  40. Private Sub btnUpdateData_Click()
  41.     Dim dt As Dim dt As ifaceDbTable
  42.     Set dt = New clsDbTable
  43.     dt.TableName = "sys_User"
  44.     '请用主键字段名替换PrimaryKeyName
  45.     dt.AddPrimaryKey "SysID", Anyinteger, Me.txtSysID.Text, 4
  46.     SetFieldValue dt
  47.     Dim b As Boolean
  48.     Dim dba As ifaceDBA
  49.     Set dba = New clsDBA
  50.     dba.OpenConnectionByDbType
  51.     b = dba.UpdateDataRow(dt)
  52.     dba.Dispose
  53.     Set dba = Nothing
  54.     Set dt = Nothing
  55. End Sub
  56. '删除
  57. Private Sub btnDeleteData_Click()
  58.     Dim b As Boolean
  59.     Dim sql As String
  60.     Dim dba As ifaceDBA
  61.     Set dba = New clsDBA
  62.     dba.OpenConnectionByDbType
  63.     sql = "delete from sys_User where SysID=333"
  64.     b = dba.ExecSqlNonQuery(sql)
  65.     dba.Dispose
  66.     Set dba = Nothing
  67. End Sub

       2、自己实现接口ifaceDbConnectionBuilder,操作任何数据库(只要ADO允许)
          假定myPrj.exe要实现对Oracle数据库的操作,可以这样:
          (a)设置myPrj.ini节内容如下
          '********* myPrj.ini *********
          [myPrj]
          SpecialIniFilePath=

    数据源=mySrv
          用户=myName
          用户密码=myPwd
          超时=100

          (b)创建一个新类,不妨命名为clsDbOracleConnString.cls,见下:

  1.           '*************************************************************
  2.           '文件 : clsDbOracleConnString.cls
  3.           '类名 : clsDbOracleConnString
  4.           '功能 : 实现接口ifaceDbConnectionString定义的方法
  5.           '版本 : 1.0
  6.           '*************************************************************
  7.           Option Explicit
  8.           Implements ifaceDbConnectionBuilder   '继承接口
  9.           '构造Oracle数据库连接字串
  10.           Private Function ifaceDbConnectionBuilder_GetConnectionString(IniFile As ifaceIniFile) As String
  11.               Dim conStr As String
  12.               On Error GoTo err_exit
  13.               conStr = "Provider=MSDAORA.1;Data Source=" & IniFile.Items("数据源").KeyValue & _
  14.                        ";User ID=" & IniFile.Items("用户").KeyValue & _
  15.                        ";Password=" & IniFile.Items("用户密码").KeyValue
  16.              
  17.               ifaceDbConnectionBuilder_GetConnectionString = conStr
  18.               Exit Function
  19.     
  20.           err_exit:
  21.               ifaceDbConnectionBuilder_GetConnectionString = ""
  22.           End Function

          上述代码并未对用户名和密码进行加密、解密,你可以使用DBA提供的加密、解密方法,也可以使用自己的加密、解密方法。

          (c)使用如下代码即可对数据库进行操作

  1.           Dim connStr As ifaceDbConnectionBuilder   '定义为接口型
  2.           Set connStr = New clsDbOracleConnString   '创建时指向自己的实现类
  3.     
  4.           Dim dba As ifaceDBA
  5.           Set dba = New clsDBA
  6.           dba.OpenConnectionByBuilder connStr   '注意这里的打开方式
  7.           Dim sql as string
  8.           sql = "select * from sys_User"
  9.           Set MSHFlexGrid1.Recordset = dba.ExecSqlToRecordSet(sql)
  10.           dba.Dispose
  11.           Set dba = Nothing
  12.           set connStr=Nothing

       3、用户、角色、权限的访问

            角色权限保存在数据库表Sys_RoleRight的RightID字段中,权限以字串按如下格式存贮 :000000000000000, 0-无效、1-有效

           从左向右依次为:View、AddNew、Update、Delete、Query、Import、Export、Print、Preview、Submit、Upload、Download、Send、Accept、Reject
            使用如下代码即可对用户角色的访问权限进行控制

  1.       Dim dba As ifaceDBA
  2.       Set dba = New clsDBA
  3.       dba.OpenConnectionByDbType
  4.       Dim usr As ifaceUracUsers
  5.       Set usr = New clsUracUsers
  6.       Set usr.ActiveDBA = dba
  7.       usr.LoadUserRoles UserID   '请用实际用户替换UserID
  8.       usr.Roles.GetRight FormName   '请用实际窗体名或类名替换FormName
  9.       '权限控制
  10.       btnQueryData.Enabled = usr.Roles.AllowView
  11.       btnInsertData.Enabled = usr.Roles.AllowAddNew
  12.       btnUpdateData.Enabled = usr.Roles.AllowUpdate
  13.       btnDeleteData.Enabled = usr.Roles.AllowDelete
  14.       '角色成员访问
  15.       Dim i As Long
  16.       For i = 1 To usr.Roles.Count
  17.           Debug.Print usr.Roles.Items(i).RoleID & " ; " & usr.Roles.Items(i).RoleName
  18.           Debug.Print
  19.       Next i
  20.       Set usr = Nothing
  21.       dba.Dispose
  22.       Set dba = Nothing

       4、提字串的加密、解密,支持中文密码,加密长度可以是32位、64位、128位
             使用如下代码即可对字符串进行加密、解密

  1.       Dim cls As New clsSecurity
  2.       Text1 = cls.EncryptString(Text1, Encrypt128)   '128位加密
  3.       Text1 = cls.DecryptString(Text1, Encrypt128)   '128位解密
  4.       Set cls = Nothing

四、DBA的补充说明
    1、INI文件的接口、实现类见文《VB6.0接口,转转转 (用VB6.0接口实现INI文件的读取组件) 》
    2、DBA中ifaceDbConnectionBuilder接口的Access、dBASE、SQL Server、Oracle的实现类见附件包,供扩展参考。
          其中Oracle的实现类clsDbConnStrOracle.cls仅仅返回一个空串,要自己去重新实现。^_^
    3、希望DBA使你的数据库编程变得轻松和愉悦。。。
    4、附件请从这里下载http://download.csdn.net/source/835035

SQL Server查询分析器使用与实战详解 建模阶段的建筑师🛠️。 阅读详情

相关推荐

ODBC、OLE DBADO的区别

一、ODBC ODBC的介绍 ODBC(Open Database Connectivity),开放数据库互连。ODBC是上个世纪八十年代末九十年代初出现的技术,它为编写关系数据库的客户软件提供了一种统一的接口。ODBC提供一个单一的API,可用于处理不同数据库的客户应用程序。使用ODBC API的应用程序可以与任何具有ODBC驱动程序的关系数据库进行通信。 ODBC(Open Da...

羞羞滴小朋友 8182

mysql datareader dataset_使用Ado.GetDataTable()方法时,当查询sql存在同名列时存在的问题...

表结构及数据如下:下面使用IAdo.GetDataTable()查询数据。(注意查询sql中,查询了两遍name字段)SqlSugarClientdb=newSqlSugarClient(newConnectionConfig(){DbType=DbType.MySql,ConnectionString=Config.ConnectionString,InitKeyType=...

weixin_35897007的博客 1045

C# SqlSugar框架的学习使用(六)-- 扩展用法

前言上一篇《C# SqlSugar框架的学习使用(五)-- 更新和删除数据的详细用法》我们已经把SqlSugar的更新和删除的详细使用方法实现了,这篇将介绍一下SqlSugar的一些高级...

Vaccae的博客 4853

.NET 数据访问架构指南(转)

 Alex Mackman, Chris Brooks, Steve Busby, 和 Ed Jezierski 微软公司 2001年10月 概述:本文提供了在多层.NET应用程序中实施基于ADO.NET的数据访问层的指导原则。其重点是一组通用数据访问任务和方案,并指导你选择最合适的途径和技术(68张打印页)。 目录 ADO.NET简介 管理数据库链接 错误处理 性能

江湖·郎中·路 2293

Text2SQL零代码实战!RAGFlow 实现自然语言转 SQL 的终极指南

在企业大模型应用方面,Text2SQL一直是应用热点。大家都希望小嘴一张,就完成一系列数据提取和分析工作。但是,使用大模型自动理解业务需求,实现 SQL 代码编写和代码执行一直都存在技术难点。传统的 Text2SQL 方案,往往依赖大模型微调,对于中小企业而言,带来非常高的应用成本。今天,介绍一个方法,使用开源 RAG 框架RAGFlow,应用知识库检索与大模型推理结合,不需要对模型做任何微调,只需要仅需配置少量结构化数据即可实现精准SQL生成,实现指定数据查询、负责查询、计算,跨表计算等多种场景。

Python_cocola的博客 7923

深度解析:通过ADO.NET驱动Kdbndp高效连接与操作Kingbase数据库

国产数据库KingbaseES与ADO.NET的深度集成实践 摘要:本文系统介绍了国产分布式数据库KingbaseES与ADO.NET技术的融合应用。通过Kdbndp驱动这一关键桥梁,开发者能够高效连接KingbaseES数据库,实现数据操作与事务管理。文章详细解析了Kdbndp驱动的核心优势、关键类库及使用方法,包括: 原生.NET实现,支持跨平台部署 完整覆盖ADO.NET标准接口 针对KingbaseES特性的深度优化 同时提供了从环境配置到代码实现的完整指南,展示了如何通过C#进行数据库连接、参数化

CSDN博客专家,领域包括但不限于:AI、大数据、Python、架构师,有合作、课程、问题、疑惑请私信博主 6万+

DatabaseSchemaReader:跨数据库元数据读取的利器

DatabaseSchemaReader:跨数据库元数据读取的利器 项目介绍 DatabaseSchemaReader 是一个简单、跨数据库的 .Net 2.0 DbProviderFactories 封装,用于读取数据库元数据。无论您使用的是 SqlServerSqlServer CE 4、MySQLSQLite、System.Data.OracleClient、ODP、Devart、Pos...

gitblog_00099的博客 525

深度解析KingbaseES数据库备份利器sys_dump:从参数到实战的全流程指南

sys_dump 是用于备份 KingbaseES 数据库的工具,可将数据库备份为脚本文件或其他归档文件。即使数据库正在并发使用,也能创建一致的备份。sys_dump 不阻塞其他用户访问数据库(读取或写入)

CSDN博客专家,领域包括但不限于:AI、大数据、Python、架构师,有合作、课程、问题、疑惑请私信博主 1万+

金仓数据库KingbaseES通过KDTS实现SQLServer至KingbaseES迁移深度实战指南

本文介绍了SQL Server数据库迁移至国产金仓数据库KingbaseES的完整实践方案。通过KDTS工具的WEB和SHELL两种形态,实现标准化、低风险的离线迁移和在线迁移(需结合KFS)。内容涵盖迁移评估、环境准备、数据库用户迁移、性能优化配置等关键步骤,并提供了SQL Server兼容性配置建议。针对不同规模的数据迁移,文章详细说明了评估方法、迁移流程及注意事项,为DBA团队提供了一套从评估到割接的完整方法论,助力企业实现高效稳定的国产数据库替代。

CSDN博客专家,领域包括但不限于:AI、大数据、Python、架构师,有合作、课程、问题、疑惑请私信博主 1万+

KingbaseES权限隔离深度解析:从MySQL的遗憾到安全增强的革新之路

本文深入探讨数据库权限管理的安全问题,对比分析MySQL与国产金仓KingbaseES的权限体系差异。MySQL存在超级权限过度集中、列级权限难实现等缺陷,而金仓通过"三权分立"架构实现系统管理员、安全管理员和审计管理员的权限隔离,提供了更精细的权限控制。文章详细介绍金仓的系统特权设置、角色权限授予机制,展示其从粗放式管理到精准制衡的进化过程,为关键行业数据安全提供可靠解决方案。

CSDN博客专家,领域包括但不限于:AI、大数据、Python、架构师,有合作、课程、问题、疑惑请私信博主 1万+

SQL脚本生成与执行:从手动操作到自动化部署的实战指南

数据库管理与开发中,SQL脚本是实现自动化、提升效率的核心技术。其原理是将数据库对象或数据转换为可重复执行的文本指令,通过命令行或脚本引擎驱动数据库引擎完成操作。这项技术的核心价值在于实现数据库变更的版本控制、保障数据迁移的可靠性,并支撑持续集成与部署流程。无论是日常运维中的结构同步、数据备份,还是敏捷开发中的迭代更新,SQL脚本都扮演着关键角色。本文聚焦于SQL Server环境,深入解析如何利用sqlcmd、PowerShell等工具链,结合事务管理与错误处理机制,安全高效地实现脚本的生成与执行,从而

weixin_33923762的博客 414

***经验谈 MSSQL SA权限***的感悟

***经验谈 MSSQL SA权限***的感悟   想必大家都知道MSSQL中SA权限是什么,可以说是至高无上。今天我就它的危害再谈点儿,我所讲的是配合NBSI上传功能得到WebShell。在讲之前先说几个条件,否则得到Shell是有难度的。   1.存在SQL注入,并且数据库类型是MSSQL。   2.连接数据库的权限必须是SA。   3.后台必须有文件上传的...

weixin_34186128的博客 189

连接数据库的方法

http://bbs.csdn.net/topics/10347240 请问:如何在程序动行时如果按程序设计时的ConnectionString进行联接时,如果不能联接上数据库,则由程序弹出定义ADOConnection1.ConnectionString的对话框由操作者进行选择服务器、数据库用户名、口令等信息再进行联接? 方法一: constdbconnstr1='Provider=M...

weixin_30417487的博客 134

vc 中 ado 访问数据库

介绍VC用ADO访问数据库全攻略,介绍了VC用ADO来访问数据库的各个对象及各方法,很经典,也很实用,很值得一看。   正文一、ADO概述ADO是Microsoft为最新和最强大的数据访问范例 OLE DB 而设计的,是一个便于使用的应用程序层接口。ADO 使您能够编写应用程序以通过 OLE. DB 提供者访问和操作数据库服务器中的数据。ADO 最主要的优点是易于使用、速度快、内存支出少和磁盘

truement的专栏 3096

(Windows平台)基于RAGFlow中agent的text2sql尝试

上篇文章中,笔者在Windows平台安装了docker和RAGFlow,建立了本地知识库。本文接下来要介绍如何使用 RAGFlow 实现 Text2SQL。Text2SQL利用自然语言处理(NLP)技术,将用户用日常语言提出的问题..

weixin_43807749的博客 2043

db-ai-assistant

基于 Java 语言的tio-boot框架开发的数据查询框架,目前已经支持 open-webui。演示地址。

litong131219的博客 531

dbconnection连接oracle数据库,.net – C#通过连接字符串检索正确的DbConnection对象

我有一个连接字符串传递给一个函数,我需要基于这个字符串创建一个基于DbConnection的对象(即SQLConnection,OracleConnection,OLEDbConnection等)。是否有任何内置的功能,或任何第三方图书馆协助。我们不一定构建这个连接字符串,所以我们不能依赖字符串写入的格式来确定它的类型,我宁可不必对可能的连接字符串的所有组合和排列进行编码DbConnection ...

weixin_39586683的博客 638

模块代码锦集

如项目是采用SQL数据库的,先在web.config中设置好数据库连接                之后在CS代码中要注意引用  c#  using System.Data.Sqlclient;  using System.Data;  using System.Configuration;  vb.net  Imports System.Data.Sqlclient  I

lxs5i5j的专栏 1047
上一篇: VB6.0接口,转转转 (用VB6.0接口实现INI文件的读取组件)
下一篇: Windows标准DLL编译工具
xlfancy
博客等级 码龄23年 3粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值