在DELPHI程序中自动设置ODBC数据源

Delphi与MySQL数据库交互:ODBC驱动指南 本文还有配套的精品资源,点击获取 简介:在Delphi开发环境中,使用ODBC驱动连接MySQL数据库是一个关键步骤。本文将详细介绍如何配置ODBC数据源以及通过ADOConnection在Delphi应用程序中实现与MySQL数据库的交互。我们将探讨ODBC的工作原理、安装MySQL ODBC驱动、创建ODBC数据源、配置ADOConnection对象以及通过ADO对象进... 阅读详情

  在DELPHI数据库应用程序中,我们访问数据库通常有两种方法.一种是通过BDE数据库搜索引擎,即利用DELPHI自带的数据库驱动程序,这种方法的优点是速度快,但应用范围有限,当数据库版本更新时,有可能不能用于操作新的数据库;另一种方法是通过ODBC,这种方法的优点是可以随操作系统(如WINDOWS)提供,作为标准接口能适应多种数据库,缺点是速度慢.在编程时,我们可以根据需要选择其中的一种方法.

  在利用ODBC访问数据库时,通常的方法时是在ODBC管理面板中设置一个ODBC系统数据源(系统DSN),然后在DBD中或在程序中设置一个数据库别名(Alias)对应该DSN,这样就可以如愿以偿地操作数据库了.相信用DELPHI做过数据库应用的程序员对这方面已经很熟悉了,笔者就不多说了.在实际应用中,笔者曾遇到过这样的情况,我们的数据库应用程序是依靠ODBC系统数据源访问和操作数据库的,应用程序运行一直良好,直到某一天,一个对WINDOWS系统较为熟悉但又不太精通的用户不慎修改或删除了我们预先设置的系统DSN......

  于是,笔者就开始研究怎么在程序中动态地设置ODBC系统DSN的内容,这样就可以增加自己程序的坚固性了.经过整整一天对WINDOWS注册表的研究,终于找到了ODBC管理程序设置DSN的秘密("天地自有公道,付出总会回报!",不是做广告!),现写出来与大家共享,也请高手指教.
  ODBC管理程序设置DSN的秘密在注册表中,不信可以到HKEY_LOCAL_MACHINE/Software/ODBC去看看,肯定让你感觉已经成功了一半.
  首先来看看系统中已安装的ODBC数据库驱动程序.在HKEY_LOCAL_MACHINE/Software/ODBC/ ODBCInst.INI中,存放着已经安装了的ODBC数据库驱动程序的信息,从这里可以查到已安装的ODBC数据库驱动程序对应的DLL文件等信息.在ODBCInst.INI/ODBC Drivers的各个键值中,键名是驱动程序名称(如Microsoft Access Driver(*.mdb)),键值为“Installed”,表示驱动程序已安装.在 ODBCInst.INI/DriverName(DriverName为一个驱动程序名称,如Microsoft Access Driver(*.mdb))中,有驱动程序的详细信息,我们主要从这里获得ODBC驱动程序对应的DLL文件的路径和文件名,即键名Driver的键值,一般为"C:/WINDOWS/SYSTEM/FileName.DLL".

  然后来看系统DSN的注册信息,在HKEY_LOCAL_MACHINE/Software/ODBC/ODBC.INI中,存放着系统DSN的注册信息,我们在ODBC管理面板设置的DSN参数就在这里.

  下面来看看创建一个ODBC系统DSN的步骤,即我们在ODBC管理面板中完成参数设置后,ODBC管理程序是怎么在注册表中注册DSN信息的.以创建一个名称为MyAccess的Ms Access97类型的系统DSN为例,我们指定的参数主要有数据库类型(Microsoft Access Driver(*.mdb))、数据源名称(MyAccess)、数据源描述(我的ACCESS)、数据库路径(C:/Inetpub/wwwroot/Test.mdb),其它参数如用户名称、用户密码、独占、只读、系统数据库、默认目录、缓冲区大小、扫描行数、页超时等采用系统缺省参数.这时,注册系统DSN一般应有以下几个步骤:

  1.在HKEY_LOCAL_MACHINE/Software/ODBC/ODBC.INI/ODBC Data Sources中增加一个字符串键值,为MyAccess = Microsoft Access Driver(*.mdb),其中分别为数据源名称和数据库类型.这是在注册表中注册一个系统DSN名称.

  2.在HKEY_LOCAL_MACHINE/Software/ODBC/ODBC.INI中创建一个子键(SubKey)MyAccess,即创建一个键为HKEY_LOCAL_MACHINE/Software/ODBC/ODBC.INI/MyAccess,然后在其下创建一些键值,详细描述一个系统DSN的配置信息,主要信息有([]中的内容为笔者注释):
DBQ=C:/Inetpub/wwwroot/Test.mdb [字符串,表示数据库路径]
Description=我的ACCESS [字符串,表示数据库描述]
Driver=C:/PWIN98/System/odbcjt32.dll [字符串,表示驱动程序,可见ODBCINST.INI]
DriverId=0x00000019(25) [数字,表示驱动程序标识,不能改变]
FIL=Ms Access; [字符串,可能与过滤Filter有关]
SafeTransaction=0x00000000 [数字,可能表示支持事务性操作的个数]
UID="" [字符串,表示用户名称,此处为空字符串]

  3.在HKEY_LOCAL_MACHINE/Software/ODBC/ODBC.INI/MyAccess中创建一个子键(SubKey)Engines,再在其下创建子键(SubKey)Jet,即创建一个键为
HKEY_LOCAL_MACHINE/Software/ODBC/ODBC.INI/MyAccess/Engines/Jet,然后在其下创建一些键值,详细描述一个系统DSN的数据库引擎配置信息,主要信息有([]中的内容为笔者注释):
ImplicitCommitSync=Yes [字符串,可能表示是否立即反映数据修改]
MaxBufferSize=0x00000200(512) [数字,表示缓冲区大小]
PageTimeout=0x00000005(5) [数字,表示页超时]
Threads=0x00000003(3) [数字,可能表示支持的最大线程数目]
UserCommitSync=Yes [字符串,可能表示是否立即将数据修改反映到用户]

  以上是建立一个系统DSN的基本信息(其它信息如选项或高级选项等信息也在这里设置,只不过因采用默认信息,注册表里没有列出),我们在程序中按上述步骤操作注册表,同样也能增加一个系统DSN或修改其配置.
在下面的例子程序中,将按以上步骤建立一个系统DSN,请注意程序中的注释.

{*******************************************************
在本程序中,将创建一个ODBC系统数据源(DSN),
数据源名称:MyAccess 数据源描述:我的新数据源
数据库类型:ACCESS97
对应数据库:C:/Inetpub/wwwroot/test.mdb
*******************************************************}
{ 注意应在USES语句中包含Registry }
procedure TForm1.Button1Click(Sender: TObject);
var
  registerTemp : TRegistry;
  bData : array[ 0..0 ] of byte;
begin
  registerTemp := TRegistry.Create; //建立一个Registry实例
  with registerTemp do
 begin
  RootKey:=HKEY_LOCAL_MACHINE;//设置根键值为HKEY_LOCAL_MACHINE

//找到Software/ODBC/ODBC.INI/ODBC Data Sources
  if OpenKey(’Software/ODBC/ODBC.INI/ODBC Data Sources’,True) then
 begin //注册一个DSN名称
  WriteString( ’MyAccess’, ’Microsoft Access Driver (*.mdb)’ );
 end
 else
begin//创建键值失败
 memo1.lines.add(’增加ODBC数据源失败’);
 exit;
end;
CloseKey;

//找到或创建Software/ODBC/ODBC.INI/MyAccess,写入DSN配置信息
if OpenKey(’Software/ODBC/ODBC.INI/MyAccess’,True) then
begin
  WriteString( ’DBQ’, ’C:/inetpub/wwwroot/test.mdb’ );//数据库目录
  WriteString( ’Description’, ’我的新数据源’ );//数据源描述
  WriteString( ’Driver’, ’C:/PWIN98/SYSTEM/odbcjt32.dll’ );//驱动程序DLL文件
  WriteInteger( ’DriverId’, 25 );//驱动程序标识
  WriteString( ’FIL’, ’Ms Access;’ );//Filter依据
  WriteInteger( ’SafeTransaction’, 0 );//支持的事务操作数目
  WriteString( ’UID’, ’’ );//用户名称
  bData[0] := 0;
  WriteBinaryData( ’Exclusive’, bData, 1 );//非独占方式
  WriteBinaryData( ’ReadOnly’, bData, 1 );//非只读方式
end
else//创建键值失败
begin
  memo1.lines.add(’增加ODBC数据源失败’);
  exit;
end;
CloseKey;

//找到或创建Software/ODBC/ODBC.INI/MyAccess/Engines/Jet
//写入DSN数据库引擎配置信息
if OpenKey(’Software/ODBC/ODBC.INI/MyAccess/Engines/Jet’,True) then
begin
  WriteString( ’ImplicitCommitSync’, ’Yes’ );
  WriteInteger( ’MaxBufferSize’, 512 );//缓冲区大小
  WriteInteger( ’PageTimeout’, 10 );//页超时
  WriteInteger( ’Threads’, 3 );//支持的线程数目
  WriteString( ’UserCommitSync’, ’Yes’ );
end
else//创建键值失败
begin
  memo1.lines.add(’增加ODBC数据源失败’);
  exit;
end;
  CloseKey;

  memo1.lines.add(’增加新ODBC数据源成功’);

  Free;
 end;
end;

Delphi mysql-connector-odbc-驱动 Delphi连接MySQL,相对于Oracle等要复杂一点,先要建立ODBC,在通过ADOconnection设置数据源连接。 立即下载

相关推荐

delphi 使用程序自动添加ODBC连接池

本程序可以手动通过delphi添加ODBC,这样可以在机器上使用MSQL数据库,使程序使用嵌入式数据库,存储数据量也不是问题。通过程序控制,可以实现程序自动添加,在系统初始化的时候,里面有例子。

Delphi通过ODBC连接到GBase 8s数据库

测试使用Delphi连接到GBase 8s数据库,使用的是ODBC连接方式。 1)、安装ODBC驱动(CSDK) 通过地址https://gbasedbt.com/dl/odbc/GBase8s_3.0.0_1-Win32-ODBC-Driver.zip 下截ODBC绿色安装包,解压,使用管理员权限运行00注册ODBC_管理员权限运行.cmd,注册ODBC驱动 在C:\Windows\SysWOW64\odbcad32.exe中配置ODBC连接,确认ODBC能正常连接到数据库 2)、在Delphi中新建

liaosnet的专栏 876

delphi odbc 设置

delphi odbc 设置delphi odbc 设置delphi odbc 设置delphi odbc 设置delphi odbc 设置delphi odbc 设置

在DELPHI程序中使用ADO对象存取ODBC

 在32位的Delphi中,可以声明一个variant变量(如AVariant),然后通过CreateOleObject创建一个OLE对象,如AVariant:=CreateOleObject (’ADODB.Connection’)可以获得一个数据库连接对象的实例,然后就可以利用该对象的方法和属性来操作ODBC数据库了。下面简单介绍一下访问ODBC数据库所用到的ADO对象及其方法和属性。1、

yuhongwei的专栏 1107

动态配置ODBC的delphi源代码

网上收集的完整的delphi源代码函数,直接可以插入自己的程序中.下载免积分。

两种方法解决这个问题OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.

两种方法解决这个问题OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.在进行深度学习比如在训练yolov8模型时,在加载训练集和验证集时会报以下那个错误时会导致模型训练中断,有以下两个方法去解决这个问题,来使模型正常训练。

weixin_73044854的博客 2万+

如何优雅地使用delphi7通过ODBC连接openGauss

此文章已于 13:45:12 2022/5/28 重新发布到 bityjh 如何优雅地在DELPHI7通过ODBC连接openGauss 如何优雅地在DELPHI7通过ODBC连接openGauss 本文基于华为的实验3:openGauss场景化综合应用实验.docx,增加了Delphi连接部分。 使用ODBC连接数据库 准备连接环境 修改数据库的pg_hba.conf文件。 在GS_HOME中查找pg_hba.conf文件,本实验中数据库GS_HOME设置的为/ga.

m0_53739559的博客 2276

【文献阅读:信道估计】Deep Residual Learning Meets OFDM Channel Estimation

基于深度学习的信道估计技术

weixin_43178683的博客 1753

对于Delphi 5 数据库应用中ODBC数据源的自动管理

 摘要摘要:本文分析了ODBC数据源设置的原理以及ODBC数据源和Delphi数据库别名的关系。并在此基础上,介绍了在Delphi5数据库应用程序安装、运行中,如何编程实现ODBC数据源和Delphi数据库别名的设置。关键字摘要:Delphi、数据库、ODBC一、前言Delphi的特色之一就是方便而强大的开发数据库的能力,只要轻击几下鼠标,填写极少的几行代码,就能快速地开发出很有风格的数据

monicaxiaoy的专栏 861

别再魔改LWIP了!用STM32CubeMX配置F407的TCP保活(KeepAlive)与自动重连

本文详细介绍了如何通过STM32CubeMX配置STM32F407的LWIP协议栈,实现TCP保活(KeepAlive)与自动重连功能,解决网络异常断开问题。文章提供了从基础环境配置到自动重连架构设计的完整指南,帮助开发者构建高可靠的网络连接机制,适用于工业物联网和嵌入式设备开发。

weixin_27038245的博客 234

无法找到来自源 nvlddmkm 的事件 ID 14 的描述

具体错误是: 无法找到来自源 nvlddmkm 的事件 ID 14 的描述。本地计算机上未安装引发此事件的组件,或者安装已损坏。可以安装或修复本地计算机上的组件。 出现这样错误的原因有很多了,有可能是硬件有可能是软件。由于我是刚配置的电脑,起初非常怀疑是自己组装的问题,折腾了好久,心态爆炸!!!先说我报这样错误的情况,以及解决办法,供后面人参考。 ...

SeventhBlue 6万+

自动创建ODBC数据源(Access,Sql Server,DB2

{--------------------------------------------------------------------}{                                                                    }{   单元名:    Crea

溺水的鱼 - Later equals never. 2154

飞常准小程序接口逆向分析:如何破解航班查询的签名机制

本文深度解析了飞常准小程序航班查询接口的安全机制,重点剖析了其基于MD5和参数排序的签名算法。通过逆向分析核心代码,详细阐述了签名生成流程,并提供了Python实现的签名生成器与调试技巧,为开发者理解与模拟此类接口调用提供了实战指南。

zz67890的博客 531

教程-Delphi 调用控制面板设置功能

应用程序运行时,有时需要对系统环境有特殊要求。例如,在Delphi数据库应用程序中可能需要进行BDE(Borland Database Engine)或ODBC数据源名称(DSN:Data Source Name)的设置;在网络应用程序中可能需要进行网络配置设置、Modem属性设置或用户拨号连接的帐号和密码的设置并保存在系统中;在CTI(Computer-Telephony Integration...

weixin_30646315的博客 110

深入解析Vivado FIFO的Standard与FWFT模式:性能对比与应用场景

本文深入解析了Vivado FIFO的Standard与FWFT两种工作模式的核心差异。通过对比数据就绪时机、读延迟、控制逻辑和有效深度等关键特性,并结合图像处理、数据包转发等典型应用场景,为FPGA设计者提供了清晰的选择依据和实战配置指南,帮助优化数据流性能与设计效率。

weixin_29219189的博客 254

PyTorch深度学习实战(36)——Pix2Pix详解与实现

Pix2Pix 是基于生成对抗网络的图像转换框架,能够将输入图像转换为与之对应的输出图像,能够广泛用于图像到图像转换的任务,如风格转换、图像修复、语义标签到图像的转换等。Pix2Pix 的核心思想是通过对抗训练将输入图像和目标输出图像进行配对,使生成网络可以学习到输入图像到输出图像的映射关系。在本节中,将学习使用 Pix2Pix 根据给定轮廓生成图像。

盼小辉丶的博客 1万+
上一篇: BitTorrent 协议规范(翻译)
流水寿司殿
博客等级 码龄22年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值