VB6动态连接数据库模板

最近接到一个任务——迁移数据库

要迁移的数据库是SQL2005数据库,有两个应用软件是与此数据库进行数据通信。由于客户端应用程序的连接数据库方式直接以绝对方式写入程序,所以此次迁移需要同时修改客户端应用程序,考虑到不久后公司地址要变动,到时还要重新配置服务器,肯定还要修客户端代码,于是我打算采用模板的方式,将应用程序修改成动态连接数据库,那么后续迁移数据将不需要修改应用程序的代码,只需要修改配置文件即可。

思路:增加一个配置文件setup.ini,固定setup.ini的数据格式,编写一个读取setup.ini数据的模板,提取其中的服务器名、用户名、密码、数据库名等信息,通过修改ini文件来实现连接不同服务器的目的:

ini.bas的代码:


‘===========================================================================
‘用法:

‘1、在程序所在目录建立Setup.ini

‘2、在ini文件中添加如下信息:
‘[Setup Information]
‘Server = 服务器名
‘UserName = 用户名
‘Password = 密码
‘Data = 数据库

‘3、工程引用Microsoft Axtivex data objects 2.6 library

‘4、修改ini.bas中main中修改form.Show

‘5 、在需要连接数据库的窗体顶端加入以下代码:
‘ Option Explicit
‘ Dim Conn As New ADODB.Connection
‘ Dim Rs As New ADODB.Recordset

‘6、连接数据库:
‘Conn.Open "driver={SQL Server};server=" + Trim(Server) + ";uid=" + Trim(User) + ";pwd=" + Trim(Password) + ";database=" + Trim(Data) + ""
‘Rs.Open "select * from 表民", Conn, adOpenKeyset, adLockOptimistic

‘7、退出数据库连接:
‘ Rs.Close
‘ Conn.Close
‘ Set Rs = Nothing
‘ Set Conn = Nothing

‘===========================================================================

‘保存执行SQL语句的字符串
‘Public SqlStmt As String

‘声明写入ini文件的API函数
Public Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As Any, ByVal lpFilenchame As String) As Long
Public Declare Function WritePrivateProfileSection Lib "kernel32" Alias "WritePrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpString As String, ByVal lpFilenchame As String) As Long

‘定义服务器参数常量
Public Server As String
Public User As String
Public Password As String
Public Data As String

‘程序进入点
Sub main()

‘从Setup.ini中读取服务器的名字
Server = GetKey(App.Path + "\Setup.ini", "Server")
User = GetKey(App.Path + "\Setup.ini", "User")
Password = GetKey(App.Path + "\Setup.ini", "Password")
Data = GetKey(App.Path + "\Setup.ini", "Data")
‘如果读取不成功,退出
If Server = "" Then
MsgBox "Setup.ini文件参数错误!", , "警告"
End If

‘显示系统主界面
Form1.Show

End Sub

‘判断文件是否存在
Function FileExist(Fname As String) As Boolean
On Local Error Resume Next
FileExist = (Dir(Fname) <> "")
End Function
‘读取ini文件的数据项值
Public Function GetKey(Tmp_File As String, Tmp_Key As String) As String
Dim File As Long
‘分配文件句柄
File = FreeFile

‘如果文件不存在则创建一个默认的Setup.ini文件
If FileExist(Tmp_File) = False Then
GetKey = ""
Call WritePrivateProfileString("Setup Information", "Server", "", App.Path + "\Setup.ini")
Call WritePrivateProfileString("Setup Information", "UserName ", " ", App.Path + "\Setup.ini")
Call WritePrivateProfileString("Setup Information", "Password", " ", App.Path + "\Setup.ini")
Call WritePrivateProfileString("Setup Information", "Data", " ", App.Path + "\Setup.ini")
Exit Function
End If

‘读取数据项值
Open Tmp_File For Input As File
Do While Not EOF(1)
Line Input #File, buffer
If Left(buffer, Len(Tmp_Key)) = Tmp_Key Then
pos = InStr(buffer, "=")
GetKey = Trim(Mid(buffer, pos + 1))
End If
Loop
Close File
End Function

以上代码在win7+VB6+SQL2005环境中测试通过.

总结:不要把程序钉死在老地方——出自《程序员应该知道的97件事》中的第28条

VB6动态连接数据库模板,布布扣,bubuko.com

时间: 2024-10-06 06:54:07

VB6动态连接数据库模板的相关文章

vb6动态创建webbrowser

Option Explicit Private WithEvents IE As VBControlExtender Private Sub Command1_Click() Dim IE Set IE = Me.Controls.Add("Shell.Explorer.2", "IE", Me) IE.Top = 0 IE.Left = 0 IE.Width = 5000 IE.Height = 5000 IE.Width = Me.ScaleWidth IE.H

动态数组模板类

本文需要说明的是一种动态数组模板类(Array),可用于自定义的需要连续空间的容器,能有效得利用分配的空间,提供较高效的数组对象操作,和使用引用计数减少内存复制拷贝. Array与std::vector或std::array不同.Array存储连续的对象,并且在对象内存前开辟一份数组 描述块对数组进行描述.Array存储的数据数量是动态的,可以通过setLength调整,同时可以使用+. +=运算符向数组中追加数据.多个数组实例允许使用同一份数据内容,并且不会重复创建内容,这是该数 组类最重要的

arcgis api for js入门开发系列二十一气泡窗口信息动态配置模板

前面地图查询篇实现图层查询query功能,但是查询结果的气泡窗口展示信息是在代码写死绑定图层的字段来的,比如name属性字段对应的值.但是这种实现方式很不灵活,对于图层字段不变的情况下或者多个图层字段名称都是一致情况下,还好,代码也不用变动:要是图层字段新增或者删除以及多个图层的字段不一致情况下,每次改动,查询结果的js代码也要对应的修改,对于维护来说,挺不方便的.所以,本篇优化一下气泡窗口的信息模板,采取动态可配置化图层字段方式,在配置文件里面配置好图层需要展示的字段模板,比如在mapconf

FreeCMS怎么动态访问模板?

原文地址:http://javaz.cn/site/javaz/site_study/info/2015/31166.html 项目地址:http://www.freeteam.cn/ FreeCMS商业版提供此功能.共有两种方式. 1.使用templetPro.do访问 ${contextPath}templetPro.do?siteid=${site.id}&templetPath=index.html siteid参数代表站点id. templetPath参数代表要动态访问此站点所用模板下

MVC小系列(十六)【在控制器级别或具体Action级别上动态设定模板页(Layout)】

方法就是使用:ActionFilterAttribute它的几个方法:OnActionExecuted,OnActionExecuting,OnResultExecuted和OnResultExecuting,它们记录一个action从加载到页面最终显示在浏览器的全过程,这个东西一般用在页面权限验证,LayOut页面控制上这里面的几个方法执行顺序:OnActionExecuting action执行前 OnActionExecuted action执行后 OnResultExecuting 页面

HDU 2475 BOX 动态树 Link-Cut Tree 动态树模板

Box Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) [Problem Description] There are N boxes on the ground, which are labeled by numbers from 1 to N. The boxes are magical, the size of each one can be enlarged or r

动态树模板

Link Cut Tree: #include<bits/stdc++.h> #define L(x) T[(x)].son[0] #define R(x) T[(x)].son[1] #define fa(x) T[(x)].fa using namespace std; const int N=300050; int stk[N]; int n,m; struct Tree{ int son[2],fa; int val,siz,Xor; bool tag; }T[N]; bool isr

动态代理连接数据库

package 动态连接数据库; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.sql.Connection; import java.sql.DriverManager; import java.util.LinkedList; public class UtilsDB { public static

jdbc连接数据库工具包模板

jdbc连接数据库操作 jdbc连接数据库模板,收藏可做模板使用(小型工程,一般大工程都会用框架,c3p0等连接,不考虑此种方法!). 配置文件的使用(使用配置文件可以使我们后期的修改更加方便,当然,也可以使用java中的枚举效果也是相同的,不过在这里推荐大家使用配置文件) 在这里使用mysql做类子: 1 #db.properties 2 #一般放在src下 3 4 5 6 driver=com.mysql.jdbc.Driver 7 url=jdbc:mysql://127.0.0.1:33