通过数据库连接参数保证程序可移植性

在设计数据库应用程序的时候,经常需要将一些信息从程序中独立出来,以保证程序的可移植性。其中最重要的信息就是数据库的连接参数。

在Delphi中,获得正确的数据库连接参数的方法十分简单,你只需要建立一个数据模块,在其中添加一个ADO Connection,双击之,然后在弹出的窗口中选“Use Connection String”,单击“Build”按钮,在“数据链接属性”窗口中选择适当的驱动引擎,并设定相应的连接参数就可以了。点击“确认”后,系统将自动生成连接串,显示在Object Inspector的Connection String中。

以Microsoft SQL Server 为例,连接串就类似于:

  Provider=SQLOLEDB.1;Password=map;
  Persist Security Info=True;User ID=map;
  Initial Catalog=SuperWorkFlow;Data Source=GTSERVER

连接串中各项参数由分号(;)分隔,具体含义如下:

Provider —— 驱动类型

Data Source —— 服务器名称

Initial Catalog —— 数据库名称

User ID —— 用户名

Password —— 口令

Persist Security Info —— 是否使用持续安全验证

现在我们所要做的第一件工作是将各项参数写入一个INI文件中。Windows INI文件,可解释为Windows初始化文件。它是一种专门用来保存应用程序初始化信息和运行环境信息的文本文件。例如Windows 3.1中两个著名的INI文件win.ini和system.ini就在Windows启动时定义了Windows环境中鼠标响应速度、使用的外壳(shell)程序等设置,Windows系统附带的许多应用程序也都有自己的INI文件。Windows软件初始化参数的获取与保存是通过读取扩展名为INI的文本文件实现的,即程序运行前先从制定的INI文件中搜索到所需的参数,并反映到程序的运行环境中,当程序退出时又将当前的环境参数保存到制定的INI文件中。

INI文件是文本文件,由若干section组成,在每个带括号的标题下面,是若干个Keyword和一个等号,每个Keyword会控制应用程序某个功能的工作方式,等号右边的Value制定Keyword的操作方式,其一般形式如下:

  [section1]
  keyword1=value1
  keyword2=value2
  [section2]
  keyword1=value1
  keyword2=value2

其中SectionName和KeywordName分别是段名和关键字明,Value为关键字对应的设定值,如果等号右边无任何内容(value为空),表示Windows应用程序已为该Keyword指定了缺省值,如果在整个文件中找不到某个Keyword,同样表示为它们指定了缺省值,各Section所出现的顺序是无关紧要的,在每一个Section里,各个Keyword的顺序同样也无关紧要,Keyword的值的类型多为String或Integer,应分两种情况读写。

INI文件的书写有严格的要求:

1、Section的名称必须加以“[”和“]”,且“[”必须在屏幕的第一列。

2、Keyword名称也必须从屏幕的第一列开始书写,且后面必须紧跟“=”

时间: 2024-10-24 17:12:54

通过数据库连接参数保证程序可移植性的相关文章

link中如何保证程序每次运行,产生的随机数都一样?

问题描述 link中如何保证程序每次运行,产生的随机数都一样? link中如何保证程序每次运行,产生的随机数都一样? 解决方案 Random rnd = new Random(一个固定的种子); 这样产生的就是固定的啦. 解决方案二: 是每次产生的都一样?还是都不一样?要保证每次一样的话,要用一个列表预存储数据,每次都从列表的开始位置取

smarty获取url参数传值程序代码

smarty获取url参数传值程序代码 <head> <meta http-equiv="content-type" content="text/html; charset=gb2312" /> <title>smarty获取url参数传值程序代码</title> </head> <body> <!--{$smarty.get.url}--> </body> </h

Java程序可移植性好的原因是虚拟机,那C++呢

问题描述 在看教学视频,讲到Java的一大特点跨平台性,说Java程序可移植性强是因为有Java虚拟机存在.那如果有C++虚拟机,C++程序的可移植性不也很好吗?初学者,不要鄙视我 解决方案 解决方案二:是的,但那样C++也就不是C++了解决方案三:java就是这样出来的.嘿嘿.解决方案四:它们的原理不一样,java和C++都是基于C语言的,C++是对C语言的加强,本质上还是C语言:而java虽然也是基于C语言的,但它相当于C语言写的一个产品.java的跨平台性其实是在虚拟机上,java的语法一

java JDBC 提高程序可移植性

程序 很多java初学者在开始接触JDBC编程的时候,在网上和大部分的教材上都是这样介绍JDBC一般的程序://可以运行的完整程序import java.sql.*; public class DatabaseDemo{ public static void main(String args[]) { Connection con; Statement stmt; ResultSet rs; //load the driver class try {//直接在程序里面写字符串 com.micro

asp 数据库连接与关闭程序

Public Function DbOpen()   If IsObject(Conn) Then Exit Function   Set Conn = Server.CreateObject(Cfg.nConnectionObject)   If Conn.State = 1 Then Exit Function   On Error Resume Next   Conn.Open ConnStr   If Err.Number Then    ErrorInfo = Err.Descript

MYSQL客户机程序4—在运行时获取连接参数

    6.5 客户机程序4-在运行时获取连接参数     现在我们有了容易修改的防止出现错误的连接代码,我们要了解一些如何做某些比使用NULL 连接参数更灵巧的事情,如在运行时允许用户指定一些值.客户机程序3由于固定连接参数方面的缺陷,要想更改那些值中的任何一个,都必须编辑源文件并重新编译.这十分不方便,特别是想使程序用于其他人时.在运行时指定连接参数的一个通用的方法是使用命令行选项.MySQL分发包中的程序接受两种形式的连接参数,如表6 - 1所示.    与标准的MySQL客户机程序一致,

汇编语言命令参数程序的编写

一. 引言: 如果大家用过TurboC2.0/3.0 or BorlandC3.X等编译器编写DOS应用程序的话,编写一个命令行参数形式的应用程序对大家来说是一件非常容易的事情,只要在主函main()中加几个参数就OK(int main(int argc,char *argv[],char *env[]){}).相对汇编语言来说编写一个命令行参数的程序就比较艰难,它要用到DOS的程序段前缀PSP(Program Segment Prefix)知识以及其他相关DOS知识.(本文只对参数介绍,环境块

云中使用可移植性应用程序需要克服的困难

当应用程序的可移植性问题出现时,企业和云计算供应商的利益就会发生冲突.企业组织想要在企业内部IT,私有云和平台即服务(PaaS)和软件即服务(SaaS)的公共云的前提下无缝地运行他们的应用程序.可移植性应用程序使用户能灵活地做到这一点-并移动到不同的供应商-但供应商并不急于发送业务给他们的竞争对手,位于圣安东尼奥市的Denim集团主席Dan Cornell说. 这些实现应用程序的可移植性的冲突需求和技术挑战,使今天的云使用情况充满挑战. 在理想的情况下,一个组织将能够从任何设备发送并接收应用程序

vc-VC里怎样实现向另一应用程序发送命令行参数?需要调用哪些API函数?

问题描述 VC里怎样实现向另一应用程序发送命令行参数?需要调用哪些API函数? 现要写一个程序甲,甲向乙程序发送命令行参数,乙解析该参数并作相应操作, 现在问题是具体甲怎样向乙发送命令行参数?需要调用哪些API函数? (抱歉还是菜鸟,没有金币悬赏~谢谢各位大神了!) 解决方案 如果a是启动进程B的话,那么CreateProcess就可以启动B,同时带上命令行参数,B解析参数进行动作. 如果B已经启动了,这个其实就是进程通信,最简单的方式是发送消息,PostMessage.B根据消息进行对应的操作