急求!高手帮忙!怎样通过vb用.INI文件连接到ACCESS数据库!我对VB不太了解!能否给我个实际例子!或者发个源代码给我谢谢!

解决方案 »

  1.   

    用INI吗?VB连接数据库应该是ADO或DAO吧?
      

  2.   

    真是莫名其妙,什么叫做“通过vb用.INI文件连接到ACCESS数据库”我只知道如何“通过vb,不用.INI文件,直接连接到ACCESS数据库”
      

  3.   

    cnn.ConnectionString = ReadConnectSetup("Setup.ini")
      

  4.   

    你用的是什么方式连接ACCESS数据库的。
    如果odbc的话,调用odbc API可能会实现吧.
      

  5.   

    连接数据库,如果是连接支付存在INI文件里,那很好解决。
    但是还是搞不清楚,你是什么意思
      

  6.   

    Option Explicit
    'lpBuffer   :   buffer for system directory
    'uSize      :   size of directory buffer
    Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" _
                            (ByVal lpBuffer As String, ByVal nSize As Long) As Long'lpAppName          :   section name
    'lpKeyName          :   key name
    'lpDefault          :   default string
    'lpReturnedString   :   destination buffer
    'nSize              :   size of destination buffer
    'lpFileName         :   initialization file name
    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'lpAppName  :   section name
    'lpKeyName  :   key name
    'lpString   :   string to add
    'lpFileName :   initialization file
    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配置文件中读取指定段名、关键字名的值
    '** 调用语法: GetInIKeyValue(SectionName as string,KeyName As String,FileName As String)
    '** 参数说明:
    '**         SectionName :段名
    '**         KeyName     :关键字名
    '**         FileName    :ini文件名包括路径
    '** 返 回 值:
    '**         String      :返回关键字值
    '** 处理说明:
    '**         调用API函数GetPrivateProfileString
    '******************************************************************************
    Public Function GetInIKeyValue(ByVal SectionName As String, _
                                   ByVal KeyName As String, _
                                   ByVal FileName As String) As String
        Dim KeyValue$
        Dim strTmp As String
        
        KeyValue$ = String$(512, " ")
        GetPrivateProfileString SectionName, KeyName, "", KeyValue$, 512, FileName
        strTmp = Trim(KeyValue$)
        GetInIKeyValue = Left(strTmp, Len(strTmp) - 1)
    End Function'********************************************************************************
    '** 函数功能:从ini配置文件中写入指定段名、关键字名及值
    '** 调用语法: SetInIKeyValue(SectionName as string,KeyName As String,KeyValue as string ,FileName As String)
    '** 参数说明:
    '**         SectionName :段名
    '**         KeyName     :关键字名
    '**         KeyValue    :关键字值
    '**         FileName    :ini文件名包括路径
    '** 返 回 值:
    '** 处理说明:
    '**         调用API函数WritePrivateProfileString
    '******************************************************************************
    Public Sub SetInIKeyValue(ByVal SectionName As String, _
                               ByVal KeyName As String, _
                               ByVal KeyValue As String, _
                               ByVal FileName As String)
        Dim lng As Long
        
        lng = WritePrivateProfileString(SectionName, KeyName, KeyValue, FileName)
    End Sub'********************************************************************************
    '** 函数功能:读取系统目录路径
    '** 调用语法: GetSysDir()
    '** 参数说明:
    '** 返 回 值:
    '**         String      :系统目录
    '** 处理说明:
    '**         调用API函数GetSystemDirectory
    '******************************************************************************
    Public Function GetSysDir() As String
        Dim sysDir$
        Dim strTmp As String
        
        sysDir = String$(128, " ")
        GetSystemDirectory sysDir$, 127
        strTmp = Trim(sysDir$)
        GetSysDir = Left(strTmp, Len(strTmp) - 1)
    End Function
      

  7.   

    以上函数是读写INI文件及取得系统目录的例子,你可以将对应的INI文件放于系统目录中进行读写操作,从中读取出连接字符串,用ADO的方式连接Access数据库
      

  8.   

    INI文件的写法可同于:[DatabaseInfo]
    Provider=SQLOLEDB.1
    Data Source=AJIU   '服务器名称
    Initial Catalog=TestIII '数据库
    User ID=sa         '用户名
    password=          '口令
      

  9.   

    你是说读取INI文件里的数据库设置,再连接到某一数据库吗??INI文件读取模块:Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, lpKeyName As Any, ByVal lpDefault As String, ByVal lpRetunedString As String, ByVal nSize As Long, ByVal lpFilename As String) As Long
    Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lplFileName As String) As LongFunction ReadINI(AppName$, Keyname$, filename$) As String
       Dim RetStr As String
       RetStr = String(255, Chr(0))
       ReadINI = Left(RetStr, GetPrivateProfileString(AppName$, ByVal Keyname$, "", RetStr, Len(RetStr), filename$))
    End FunctionFunction WriteINI(mizainz$, Place$, Toput$, AppName$)
        r% = WritePrivateProfileString(mizainz$, Place$, Toput$, AppName$)
    End Function
    打开数据库SettingFile = App.path & "\settings.ini"
    SYSDB = ReadINI("APP", "DBCONN", SettingFile)
    dim Conn as adodb.connection
    set conn=new adodb.connection
    conn.connectionstring=sysdb
    conn.open
      

  10.   

    使用INI的方式存取文件参数
    在d盘根目录新建 aaa.ini文件模拟程序
    '模块中
    Option Explicit'-------------------------
    '声明
    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
    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 MyGetSetting(Section As String, KeyName As String, DefaultValue As String) As String    Dim X As Long
        Dim Holder As String * 255    X = GetPrivateProfileString(Section, KeyName, DefaultValue, Holder, 254, "d:\aaa.ini")
        MyGetSetting = Left$(Holder, InStr(Holder, Chr$(0)) - 1)End Function'保存设置
    Public Sub MySetSetting(Section As String, KeyName As String, KeyValue As String)    Dim X As Long    X = WritePrivateProfileString(Section, KeyName, KeyValue, "d:\aaa.ini")End Sub'窗体中
    Private Sub Command1_Click()
        '保存变量
        MySetSetting "服务器名", "服务器名", "sv"
        MySetSetting "用户名", "用户名", "sa"
        MySetSetting "密码", "密码", "aaaa"
        MySetSetting "数据库名", "数据库名", "Mydatabase"
        MsgBox "保存成功"
    End SubPrivate Sub Command2_Click()
        '取出变量
        MsgBox MyGetSetting("服务器名", "服务器名", "")
        MsgBox MyGetSetting("用户名", "用户名", "")
        MsgBox MyGetSetting("密码", "密码", "")
        MsgBox MyGetSetting("数据库名", "数据库名", "")
    End Sub
      

  11.   

    连接数据库SQL或Access数据库
        Public db As Connection
        Set db = New Connection
        db.CursorLocation = adUseClient
        'SQL
        db.Open "PROVIDER=SQLOLEDB.1;driver={SQL Server};server=yourServer;uid=sa;pwd=sa;database=yourBase;"
        'Access
        'db.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\yourBase"
      

  12.   


    Sub Main()
        P_WorkPath = App.Path
        If Right$(P_WorkPath, 1) = "\" Then P_WorkPath = Left$(P_WorkPath, Len(P_WorkPath) - 1)
       
        '读系统配置文件.
        P_SERVER = Trim$(GetIniStr("SMSET", "SERVER", P_WorkPath & "\Admini.INI"))
        P_DBNAME = Trim$(GetIniStr("SMSET", "DBNAME", P_WorkPath & "\Admini.INI"))
        P_USER = Trim$(GetIniStr("SMSET", "USER", P_WorkPath & "\Admini.INI"))
        P_PWD = Trim$(GetIniStr("SMSET", "PWD", P_WorkPath & "\Admini.INI"))
    End Sub'--------------------------------------------------------------
    Private Declare Function WritePrivateProfileString _
    Lib "kernel32" Alias "WritePrivateProfileStringA" _
    (ByVal lpApplicationname As String, ByVal _
    lpKeyName As Any, ByVal lsString As Any, _
    ByVal lplFilename As String) As LongPrivate Declare Function GetPrivateProfileString Lib _
    "kernel32" Alias "GetPrivateProfileStringA" _
    (ByVal lpApplicationname As String, ByVal _
    lpKeyName As String, ByVal lpDefault As _
    String, ByVal lpReturnedString As String, _
    ByVal nSize As Long, ByVal lpFileName As _
    String) As Long'
    '读INI文件.
    '函数:GetIniStr
    '参数:AppName 项目名.In_Key 键名,sFileName 文件名
    '返回值:成功:对应的键值.失败或不存在:""
    Public Function GetIniStr(ByVal AppName As String, ByVal In_Key As String, ByVal sFileName 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, sFileName
        GetStr = VBA.Replace(GetStr, VBA.Chr(0), "")
        If GetStr = "" Then
           GoTo GetIniStrErr
        Else
           GetIniStr = GetStr
           GetStr = ""
        End If
        Exit FunctionGetIniStrErr:
           Err.Clear
           GetIniStr = ""
           GetStr = ""
    End Function'
    '写INI文件.
    '函数:WriteIniStr
    '参数:AppName 项目名.In_Key 键名,In_Data 键值,sFileName 文件名
    '返回值:成功=TRUE.失败=FALSE
    Public Function WriteIniStr(ByVal AppName As String, ByVal In_Key As String, ByVal in_data As String, ByVal sFileName As String) As Boolean
        On Error GoTo WriteIniStrErr
        WriteIniStr = True
        If VBA.Trim(in_data) = "" Or VBA.Trim(In_Key) = "" Or VBA.Trim(AppName) = "" Then
           GoTo WriteIniStrErr
        Else
         WritePrivateProfileString AppName, In_Key, in_data, sFileName
        End If
        Exit Function
        
    WriteIniStrErr:
           Err.Clear
           WriteIniStr = False
    End Function
      

  13.   

    這樣很簡單呀。理清楚思路:1,怎麼用vb連接數據庫,2怎麼再ini文件中讀出設置Public StrUserName As String
    Public StrPassWord As String
    Public StrSource As String
    Public StrDateBase As StringPublic 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
    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
    Private Sub Form_Activate()
        Dim StrFindFile As String
          StrFindFile = Dir(App.Path & "\readcard.ini", vbNormal)
            If StrFindFile = "" Then
                MsgBox "系統運行所需檔丟失,無法正常運行" & vbCrLf & "請立即與軟體供應商聯繫!", vbCritical + vbOKOnly, "系統錯誤資訊"
               End
            End If
       LoadParameter
       
       On Error GoTo ConnError
       Set Conn = CreateObject("ADODB.Connection")
           Conn.ConnectionString = "Provider=SQLOLEDB.1;Password=" & StrPassWord & ";Persist Security Info=True;User ID= " & StrUserName & ";Initial Catalog=" & StrDateBase & ";Data Source=" & StrSource
           Conn.Open
    Exit Sub
    ConnError:
           MsgBox "打開資料庫失敗!請檢查資料庫是否正常運行!", vbCritical + vbOKOnly, "系統錯誤資訊"
    End Sub
    Public Function ReadFromIni(ByVal FileName As String, ByVal Section As String, ByVal Key As String) As String
        Dim I As Long
        Dim buff As String * 128
        GetPrivateProfileString Section, Key, "", buff, 128, FileName
        I = InStr(buff, Chr(0))
        ReadFromIni = Trim(Left(buff, I - 1))
    End Function
    就這樣從ini讀出PStrUserName ,StrPassWord ,StrSource ,
    StrDateBase 然後送給連接符就可以了