vb如何通过ini文件连接sql数据库

qjj1221 2010-08-18 09:55:26
如题 我用vb做了一个程序SQL数据库的,目前是将数据库安装在一个主机A上,然后其他的电脑连接到主机A上的SQL数据库,运行exe程序。模块连接代码是:
Public Sub OpenConn() '连接数据库
Set conn = New ADODB.Connection
Set Rs = New ADODB.Recordset
conn.CursorLocation = adUseClient
conn.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=SBGL;Data Source=ZHUXL" '连接局域网上ZHUXL主机上的SQL数据库
End Sub
目前这个是可以运行的,但是这个有点不方便。比如主机A的用户名更改了,或SQL数据库的密码改了,则还要通过VB程序修改模块里的代码,然后再重新生成exe文件才行。我看到有的程序文件里直接有个INI文件,通过它可以直接修改连接到数据库,请问这个要怎么做呢?具体的我模块里的代码要如何更改,INI文件如何做?谢谢
...全文
279 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Zondi 2010-08-18
  • 打赏
  • 举报
回复
ini文件用API读取指定值,赋值到变量
guyehanxinlei 2010-08-18
  • 打赏
  • 举报
回复
INI文件是运用程序的配置文件,其中可以配置一些常需要修改的信息,比如数据库连接字符串,配置参数等等
qjj1221 2010-08-18
  • 打赏
  • 举报
回复
好的 谢谢 看不太懂呀 这个例子里的 HAS_SIM.INI 文件是不是就是读取主机名然后放到变量strServerName里?
[Quote=引用 4 楼 jhone99 的回复:]
Option Explicit

Public sIniFileDir As String 'ini文件的路径
Public sNeirong() As String

Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" _
(ByVal lpApplica……
[/Quote]
jhone99 2010-08-18
  • 打赏
  • 举报
回复
从ini文件读取主机名,放到变量strServerName里,你的连接字符串使用strServerName
qjj1221 2010-08-18
  • 打赏
  • 举报
回复
谢谢 strServerName 又从哪里读取呢?在ini文件里?我看见人家程序里的ini文件里是有ServerName这项
[Quote=引用 3 楼 jhone99 的回复:]
Public Sub OpenConn() '连接数据库
Set conn = New ADODB.Connection
Set Rs = New ADODB.Recordset
conn.CursorLocation = adUseClient
conn.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ……
[/Quote]
jhone99 2010-08-18
  • 打赏
  • 举报
回复
Option Explicit

Public sIniFileDir As String 'ini文件的路径
Public sNeirong() As String

Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" _
(ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, _
ByVal lpDefault As String, _
ByVal lpReturnedString As String, _
ByVal nSize As Long, _
ByVal lpFileName As String) As Long

Public Function FlGetUserINI()
Dim lpOut As String * 128
Dim Ret As Long
Dim i As Integer
Dim sUser As String
Dim sKey As String

sIniFileDir = Trim(App.Path)
If Right(sIniFileDir, 1) <> "\" Then sIniFileDir = sIniFileDir & "\"
sIniFileDir = sIniFileDir & "HAS_SIM.INI"

For i = 0 To 1000
sKey = "KEY" & i + 1
Ret = GetPrivateProfileString("keshi", sKey, "", lpOut, 128, sIniFileDir)
sUser = FlLeftB(lpOut, Ret)
If sUser = "" Then
Exit Function
End If
ReDim Preserve sNeirong(i)
sNeirong(i) = sUser
Next

End Function

Public Function FlLeftB(p1 As String, p2 As Long) As String
FlLeftB = StrConv(LeftB(StrConv(p1, vbFromUnicode), p2), vbUnicode)
End Function

一个读取ini文件的例子 你参考下吧!~

你去看看那2个api就知道什么意思了!~
jhone99 2010-08-18
  • 打赏
  • 举报
回复
Public Sub OpenConn() '连接数据库
Set conn = New ADODB.Connection
Set Rs = New ADODB.Recordset
conn.CursorLocation = adUseClient
conn.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=SBGL;Data Source=" & strServerName & " '连接局域网上ZHUXL主机上的SQL数据库
End Sub

******************************
这样修改你的连接语句
qjj1221 2010-08-18
  • 打赏
  • 举报
回复
谢谢 如要实现我上面说的要求,具体该怎么做呢
[Quote=引用 1 楼 alzeng 的回复:]
ini文件一般是自动生成的,如果其中有相应的动态文件,可以用Open "\路径\*.ini" For Input As #1的方法打开它,读取内容后进行相应处理,得到你所想要的字串,然后在conn.Open中引用这个字串即可。
[/Quote]
ZenRoi 2010-08-18
  • 打赏
  • 举报
回复
ini文件一般是自动生成的,如果其中有相应的动态文件,可以用Open "\路径\*.ini" For Input As #1的方法打开它,读取内容后进行相应处理,得到你所想要的字串,然后在conn.Open中引用这个字串即可。
qjj1221 2010-08-18
  • 打赏
  • 举报
回复
恩非常感谢各位
jiaochengman 2010-08-18
  • 打赏
  • 举报
回复
你可以写一个配置文件。通过配置文件写入INI中。程序读INI文件就可以了。
qjj1221 2010-08-18
  • 打赏
  • 举报
回复
谢谢大家了 我是通过读取ini文件里的信息 然后生成连接字符串
cnuser1 2010-08-18
  • 打赏
  • 举报
回复
'状态文件与数据库连接字符串中的DB,USERNAME,PASSWORD,分别保存在两天不同INI文件中。
Option Explicit
Public PstrConfArr(4) As String '1:User Name,2:Pssword,3:Database Name
Public PstrConfArr_Status(4) As String '1:User Name,2:Pssword,3:Database Name

Public Function MainSysOpening()
'On Error GoTo errMain:
Call PSubReadConf_Status
If Trim(PstrConfArr_Status(1)) = "0" Then
frmlogin.Show
Exit Function
Else
Call PSubReadConf

PUserName = PstrConfArr(1)
PUserPassword = PstrConfArr(2)
PUserDbName = PstrConfArr(3)
Call PopenDBConnection
End If
End Function

Public Function PSubReadConf()
Dim rcStr As String

Dim fso As New Scripting.FileSystemObject
Dim myTxt, i

Set myTxt = fso.OpenTextFile(Filename:=App.Path + "\dads.conf", IOMode:=ForReading)
With myTxt
i = 1
Do Until i > 3 '.AtEndOfStream
'Me.Controls("Text" & i).Text = .ReadLine
rcStr = .ReadLine
PstrConfArr(i) = StringEnDeCodecn(rcStr, 75)
'Debug.Print strConfArr(i)
i = i + 1
Loop
.Close
End With

End Function

Public Function PSubReadConf_Status()
Dim fso As New Scripting.FileSystemObject
Dim myTxt, i

Set myTxt = fso.OpenTextFile(Filename:=App.Path + "\Status.conf", IOMode:=ForReading)
With myTxt
i = 1
Do Until .AtEndOfStream
'Me.Controls("Text" & i).Text = .ReadLine
PstrConfArr_Status(i) = .ReadLine 'StringEnDeCodecn(rcStr, 75)
'Debug.Print strConfArr(i)
i = i + 1
Loop
.Close
End With
End Function

Public Function PopenDBConnection()
On Error GoTo errOpenBDConnection:
sSQL = "Provider=OraOLEDB.Oracle.1;Persist Security Info=True;User ID=" + Trim(PUserName) + ";Password=" + Trim(PUserPassword) + ";Data Source=" + Trim(PUserDbName)

ConnString = sSQL 'Save the Public connection string.
Conn.Open sSQL
frmLoginByUsers.Show
Exit Function
errOpenBDConnection:
MsgBox ("Database connection failed!" & vbCrLf & Err.Number & Err.Number & vbCrLf & Err.Description), vbCritical, " EnterpriseIQ System"
Exit Function
End Function

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧