如何从INI文件中读取数据库连接字符串?内否给出一段代码例子

解决方案 »

  1.   

    转帖
    读写INI文件模块Option Explicit
    '读写INI文件模块
    Public 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 Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal AppName As String, ByVal KeyName As String, ByVal keydefault As String, ByVal Filename As String) As LongPublic Function myReadINI(iniFileName, iniSection, iniKey, iniDefault)
    '该函数的使用与读注册表类似
    'inifilename为INI文件名,inisection为INI文件中的项目,inikey为项目下的键名称,inidefault为默认键值
    'If no section (appname), default is first appname
    '(若无项目名,默认为初始名称)
    'if no key, default is first key
    '(若无键名,默认为初始键名)
        Dim lpApplicationName As String
        Dim lpKeyName As String
        Dim lpDefault As String
        Dim lpReturnedString As String
        Dim nSize As Long
        Dim lpFileName As String
        Dim retval As Long
        Dim Filename As String
        '判断INI文件是否存在
        If Dir(iniFileName) <> "" Then
            lpDefault = Space$(254)
            lpDefault = iniDefault    
            lpReturnedString = Space$(254)    
            nSize = 254
            lpFileName = iniFileName
            lpApplicationName = iniSection
            lpKeyName = iniKey
            Filename = lpFileName
            retval = GetPrivateProfileString(lpApplicationName, lpKeyName, lpDefault, lpReturnedString, nSize, lpFileName)
            myReadINI = lpReturnedString
        End If
    End FunctionPublic Function myWriteINI(iniFileName As String, iniSection As String, iniKey As String, Info As String) As String
        '该函数的使用与写注册表类似,可在INI文件中添加或修改项、键、值
        'iniFileName为INI文件名,inisection为INI文件中的项目,inikey为项目下的键名称,Info为键值
        Dim retval As Long
        retval = WritePrivateProfileString(iniSection, iniKey, Info, iniFileName)
        myWriteINI = LTrim$(Str$(retval))
    End FunctionPublic Sub DelSectionINI(iniFileName As String, iniSection As String)
        '该过程可删除INI文件中指定的项
        'iniFileName为INI文件名,iniSection为指定的项        
        '判断INI文件是否存在
        If Dir(iniFileName) <> "" Then
            WritePrivateProfileString iniSection, vbNullString, vbNullString, iniFileName
        End If
        
    End SubPublic Sub DelKeyINI(iniFileName As String, iniSection As String, iniKey As String)
        '该过程可删除INI文件中指定的键
        'iniFileName为INI文件名,iniSection为指定的项,iniKey为指定的键        
        '判断INI文件是否存在
        If Dir(iniFileName) <> "" Then
            WritePrivateProfileString iniSection, iniKey, vbNullString, iniFileName
        End If
    End SubPublic Sub DelValueINI(iniFileName As String, iniSection As String, iniKey As String)
        '该过程可删除INI文件中指定键的值
        'iniFileName为INI文件名,iniSection为指定的项,iniKey为指定的键    
        '判断INI文件是否存在
        If Dir(iniFileName) <> "" Then
            WritePrivateProfileString iniSection, iniKey, "", iniFileName
        End If
    End SubPublic Sub DelFileINI(iniFileName As String)
        '该过程可删除INI文件
        'iniFileName为INI文件名
        '判断INI文件是否存在
        If Dir(iniFileName) <> "" Then
            Kill iniFileName
        End If
    End Sub
      

  2.   

    我的意思是希望举出一个VB代码读取INI中的数据库连接字符串的例子
      

  3.   

    简单点直接读txt文件不就行了
      

  4.   

    比如在INI文件中有如下:
    "driver={SQL Server};server=ww;UID=sa;PWD=;database=dd"
      

  5.   

    INI文件格式如下:
    ;注释
    [小节名]
    关键字=值
    ……
    可以有多个小节
      

  6.   

    妳所说的数据库连接字符串,
    只是某小节中的一个关键字,
    读取其键值可以参考以下函数:Private  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 GetIniStr(ByVal AppName As String, ByVal In_Key As String) As String
        On Error GoTo GetIniStrErr
        If VBA.Trim(In_Key) = "" Then
            GoTo GetIniStrErr
        End If
        Dim GetStr   As String
        GetStr = VBA.String(128, 0)
        GetPrivateProfileString AppName, In_Key, "", GetStr, 256, App.Path & "\DB.ini"
        GetStr = VBA.Replace(GetStr, VBA.Chr(0), "")
        If GetStr = "" Then
            GoTo GetIniStrErr
        Else
            GetIniStr = GetStr
            GetStr = ""
            End If
        Exit Function
    GetIniStrErr:
        Err.Clear
        GetIniStr = ""
        GetStr = ""
    End Function
      

  7.   

    太麻煩了,告你一個好辦法,用.udl文件來連最方便了!
    QQ:439609487
      

  8.   

    '写ini
    Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
    '读ini
    Private 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
    '写入ini中的servername
    Public Sub set_com_num(ByVal vNewValue As String)
        WritePrivateProfileString "com", "servername", vNewValue, App.Path & "\sample.ini"
    End Sub
    '获得ini中的servername
    Public Function Get_com_num() As String
        Dim strTemp As String * 255
        Dim n As Long
        n = GetPrivateProfileString("com", "servername", "", strTemp, Len(strTemp), App.Path & "\sample.ini")
        Get_com_num = Left(strTemp, n)
    End Function
    '写入ini中的databasename
    Public Sub set_com_name(ByVal vNewValue As String)
        WritePrivateProfileString "com", "databasename", vNewValue, App.Path & "\sample.ini"
    End Sub
    '获得ini中的databasename
    Public Function Get_com_name() As String
        Dim strTemp As String * 255
        Dim n As Long
        n = GetPrivateProfileString("com", "databasename", "", strTemp, Len(strTemp), App.Path & "\sample.ini")
        Get_com_name = Left(strTemp, n)
    End Function
    '设置ini中的username
    Public Sub set_readcount1(ByVal vNewValue As String)
       Debug.Print vNewValue
        WritePrivateProfileString "com", "username", vNewValue, App.Path & "\sample.ini"
    End Sub
    '获得ini中的username
    Public Function Get_readcount1() As String
        Dim strTemp As String * 255
        Dim n As Long
        n = GetPrivateProfileString("com", "username", "", strTemp, Len(strTemp), App.Path & "\sample.ini")
        Get_readcount1 = Left(strTemp, n)
    End Function
    '设置ini中的password
    Public Sub set_readcount2(ByVal vNewValue As String)
        WritePrivateProfileString "com", "password", vNewValue, App.Path & "\sample.ini"
    End Sub
    '获得ini中的password
    Public Function Get_readcount2() As String
        Dim strTemp As String * 255
        Dim n As Long
        n = GetPrivateProfileString("com", "password", "", strTemp, Len(strTemp), App.Path & "\sample.ini")
        Get_readcount2 = Left(strTemp, n)
    End Function
      

  9.   

    在我看来你可以先建ini文件(空),然后用VB写如连接的变量,再读取。
      

  10.   

    不同哦写ini
    Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
    '读ini
    Private 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
    '写入ini中的servername
    Public Sub set_com_num(ByVal vNewValue As String)
        WritePrivateProfileString "com", "servername", vNewValue, App.Path & "\sample.ini"
    End Sub
    '获得ini中的servername
    Public Function Get_com_num() As String
        Dim strTemp As String * 255
        Dim n As Long
        n = GetPrivateProfileString("com", "servername", "", strTemp, Len(strTemp), App.Path & "\sample.ini")
        Get_com_num = Left(strTemp, n)
    End Function
    '写入ini中的databasename
    Public Sub set_com_name(ByVal vNewValue As String)
        WritePrivateProfileString "com", "databasename", vNewValue, App.Path & "\sample.ini"
    End Sub
    '获得ini中的databasename
    Public Function Get_com_name() As String
        Dim strTemp As String * 255
        Dim n As Long
        n = GetPrivateProfileString("com", "databasename", "", strTemp, Len(strTemp), App.Path & "\sample.ini")
        Get_com_name = Left(strTemp, n)
    End Function
    '设置ini中的username
    Public Sub set_readcount1(ByVal vNewValue As String)
       Debug.Print vNewValue
        WritePrivateProfileString "com", "username", vNewValue, App.Path & "\sample.ini"
    End Sub
    '获得ini中的username
    Public Function Get_readcount1() As String
        Dim strTemp As String * 255
        Dim n As Long
        n = GetPrivateProfileString("com", "username", "", strTemp, Len(strTemp), App.Path & "\sample.ini")
        Get_readcount1 = Left(strTemp, n)
    End Function
    '设置ini中的password
    Public Sub set_readcount2(ByVal vNewValue As String)
        WritePrivateProfileString "com", "password", vNewValue, App.Path & "\sample.ini"
    End Sub
    '获得ini中的password
    Public Function Get_readcount2() As String
        Dim strTemp As String * 255
        Dim n As Long
        n = GetPrivateProfileString("com", "password", "", strTemp, Len(strTemp), App.Path & "\sample.ini")
        Get_readcount2 = Left(strTemp, n)
    End Function