如何把一个数据库的连接字符串写到注册表中,每次运行程序,去读出该字符串。而且可以对该字符串进行修改

解决方案 »

  1.   

    关于注册表操作的文章网上有很多!去google.com搜一下
    csdn上也有很多类似的问题都已经答过了,你可以参考一下
      

  2.   

    这种问题在CSDN上已经有很多了,但还是给贴一个吧
    '------------------------------
    '作者:David_Lv
    '时间:2003-06-08
    '
    '类名:CRegister
    '功能:对注册表的一些简单操作
    '------------------------------
    Option Explicit
    '======变量定义======
    Private Const HKEY_CURRENT_USER = &H80000001    '所需注册的hKey位置
    Private Const REG_SZ = 1                        '键值的数据类型
    '======API声明======
    Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" _
    (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As LongPrivate Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" _
    (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
         
    Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" _
    (ByVal hKey As Long, ByVal lpSubKey As String) As Long
         
    Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" _
    (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, _
    ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As LongPrivate Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" _
    (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, _
    lpType As Long, lpData As Any, lpcbData As Long) As Long
         
    Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" _
    (ByVal hKey As Long, ByVal lpSubKey As String) As Long
         '======方法定义======'创建一个项
    Public Function CreateRegKey(ByVal vSubKey As String) As Boolean
        On Error GoTo ErrH
        Dim nResult As Long
        
        '检查传入的值是否合法
        If Len(vSubKey) = 0 Then GoTo ErrH
        
        '在注册表中创建一个项
        nResult = RegCreateKey(HKEY_CURRENT_USER, vSubKey, nResult)
        If nResult <> 0 Then GoTo ErrH
        CreateRegKey = True
        Exit Function
        
    ErrH:
        CreateRegKey = False
    End Function
    '删除一个最底层项
    Public Function DeleteRegKey(ByVal vSubKey As String) As Boolean
        On Error GoTo ErrH
        Dim nResult As Long
        
        '检查传入的值是否合法
        If Len(vSubKey) = 0 Then GoTo ErrH
        
        '在注册表中删除一个项
        nResult = RegDeleteKey(HKEY_CURRENT_USER, vSubKey)
        If nResult <> 0 Then GoTo ErrH
        DeleteRegKey = True
        Exit Function
        
    ErrH:
        DeleteRegKey = False
    End Function
    '在指定的项中写入一个值
    Public Function SetRegValue(ByVal vSubKey As String, ByVal vKeyName As String, ByVal vKeyValue As String) As Boolean
        On Error GoTo ErrH
        Dim nResult As Long
        Dim nKey As Long
        
        '检查传入的值是否合法
        If Len(vSubKey) = 0 Then GoTo ErrH
        If Len(vKeyName) = 0 Then GoTo ErrH
        If Len(vKeyValue) = 0 Then GoTo ErrH
        
        '检查是否存在vSubKey项,成功会返回一个nKey值
        nResult = RegOpenKey(HKEY_CURRENT_USER, vSubKey, nKey)
        If nResult <> 0 Then GoTo ErrH
        
        '根据nKey键值,写入键名及键值
        nResult = RegSetValueEx(nKey, vKeyName, 0, REG_SZ, ByVal vKeyValue, LenB(StrConv(vKeyValue, vbFromUnicode)) + 1)
        If nResult <> 0 Then GoTo ErrH
        SetRegValue = True
        Exit Function
        
    ErrH:
        SetRegValue = False
    End Function
    '查找指定项中指定键值名称的键值
    '如果注册表中没有指定的项值vSubKey,lpcbData参数返回0
    '如果有项值但没有键名vKeyName,lpcbData参数返回2
    '如果vKeyValue为一个字符,lpcbData参数返回2
    '如果vKeyValue大于一个字符,lpcbData参数返回>2
    Public Function GetRegValue(ByVal vSubKey As String, ByVal vKeyName As String) As String
        On Error GoTo ErrH
        Dim nResult As Long, nKey As Long, nKeyValue As String
        Dim nBufferSize As Long
        
        '检查传入的参数是否合法
        If Len(vSubKey) = 0 Then GoTo ErrH
        If Len(vKeyName) = 0 Then GoTo ErrH
        
        '打开指定的项,成功会返回一个nKey值
        nResult = RegOpenKey(HKEY_CURRENT_USER, vSubKey, nKey)
        If nResult <> 0 Then GoTo ErrH
        
        '根据nKey获取键值的长度
        nResult = RegQueryValueEx(nKey, vKeyName, 0, REG_SZ, 0, nBufferSize)
        
            
        '根据nKey获取键值的内容
        nKeyValue = Space(nBufferSize + 1)
        nResult = RegQueryValueEx(nKey, vKeyName, 0, REG_SZ, ByVal nKeyValue, nBufferSize)
        
        '返回的nKeyValue的后面会有Null字符,所以先用""替换Null字符,再进行Trim
        nKeyValue = Trim(Replace(nKeyValue, vbNullChar, ""))
        GetRegValue = nKeyValue
        Exit Function
        
    ErrH:
        GetRegValue = ""
    End Function
    '删除指定项中的一个键
    Public Function DeleteRegValue(ByVal vSubKey As String, ByVal vKeyName As String) As Boolean
        On Error GoTo ErrH
        Dim nResult As Long
        Dim nKey As Long
        
        '检查传入的参数是否合法
        If Len(vSubKey) = 0 Then GoTo ErrH
        If Len(vKeyName) = 0 Then GoTo ErrH
        
        '打开指定的项,成功会返回一个nKey值
        nResult = RegOpenKey(HKEY_CURRENT_USER, vSubKey, nKey)
        If nResult <> 0 Then GoTo ErrH
        
        '根据nKey删除指定的键
        nResult = RegDeleteValue(nKey, vKeyName)
        If nResult <> 0 Then GoTo ErrH
        DeleteRegValue = True
        Exit Function
        
    ErrH:
        DeleteRegValue = False
    End Function
      

  3.   

    关于注册表操作的文章网上有很多!去google.com搜一下
      

  4.   

    不用那么复杂,有一种简单的方法
    saveseting("你的工程名","你的域名","键的名称","键值")
    如 saveseting("test1","test2","username","admin")
    saveseting以后可以用getseting来取
    如: username= GetSetting("test1", "test2", _
                       "username", "admin")
    在getsetring中,admin是一个缺省值,就是说是你设定的一个默认值,可以不要。
    你只要把数据库访问的几个参数在设定时通过saveseting来设,在使用时通过getseting来取就行了。