有没有用libmysql.dll连接Mysql的示例,支持新libmysql.dll库的,http://download.csdn.net/source/325189试过了无法连接。换用新的libmysql.dll运行就消失,用旧的提示1251,mysql连接错误

解决方案 »

  1.   

    把API_mysql_connect换用已下这个函数:
    Public Declare Function mysql_real_connect Lib "libmySQL" _
                                    (ByVal lMysql As Long, _
                                    ByVal sHostName As String, _
                                    ByVal sUserName As String, _
                                    ByVal sPassword As String, _
                                    ByVal sDbName As String, _
                                    ByVal lPortNum As Long, _
                                    ByVal sSocketName As String, _
                                    ByVal lFlags As Long) As Long以下我的使用的一参考
    Friend Function OpenConnection(ByVal sHostName As String, _
                                   ByVal sUserName As String, _
                                   ByVal sPassword As String, _
                                   ByVal sDbName As String, _
                          Optional ByVal lPortNum As Long = 3306, _
                          Optional ByVal lFlags As MYSQL_FLAG, _
                          Optional ByVal cs_name As String) As MYSQL_CONNECTION_STATE
    Dim lNumber As Long
        
        Me.CloseConnection
        OpenConnection = m_State    m_Hostname = sHostName
        m_Username = sUserName
        m_Password = sPassword
        m_DbName = sDbName
        m_PortNum = lPortNum
        
        m_MYSQL = mysql_init(m_MYSQL)
        
        If m_MYSQL = 0 Then
            Err.Raise vbObjectError + 1, "DBConn.OpenConnection", "Couldn't obtain a connection handler."
            Exit Function
        Else
            If UBound(MyOptArr) > 0 Then
                Dim i As Integer
                'set options
                For i = 1 To UBound(MyOptArr)
                    Select Case MyOptArr(i).eOption
                    Case MYSQL_OPT_CONNECT_TIMEOUT
                        mysql_options m_MYSQL, MYSQL_OPT_CONNECT_TIMEOUT, MyOptArr(i).sArg
                    Case MYSQL_OPT_COMPRESS
                        mysql_options m_MYSQL, MYSQL_OPT_COMPRESS, 0
                    Case MYSQL_OPT_NAMED_PIPE
                        mysql_options m_MYSQL, MYSQL_OPT_NAMED_PIPE, 0
                    Case MYSQL_INIT_COMMAND
                        mysql_options m_MYSQL, MYSQL_INIT_COMMAND, MyOptArr(i).sArg
                    Case MYSQL_READ_DEFAULT_FILE
                        mysql_options m_MYSQL, MYSQL_READ_DEFAULT_FILE, MyOptArr(i).sArg
                    Case MYSQL_READ_DEFAULT_GROUP
                        mysql_options m_MYSQL, MYSQL_READ_DEFAULT_GROUP, MyOptArr(i).sArg
                    End Select
                Next i
            End If        If mysql_real_connect(m_MYSQL, m_Hostname, m_Username, m_Password, m_DbName, m_PortNum, "CESMIS", m_Flags) = 0 Then
                CheckForError "DBConn.OpenConnection"
                RealClose
            Else
                m_State = MY_CONN_OPEN
                
                If cs_name <> "" Then
                   lNumber = mysql_set_character_set(m_MYSQL, cs_name)
                   If lNumber > 0 Then
                      CheckForError "DBConn.OpenConnection"
                   End If
                End If
            End If
        End If    OpenConnection = m_State
    End Function
      

  2.   

    把API_mysql_connect换用已下这个函数: 
    Public Declare Function mysql_real_connect Lib "libmySQL" _ 
                                    (ByVal lMysql As Long, _ 
                                    ByVal sHostName As String, _ 
                                    ByVal sUserName As String, _ 
                                    ByVal sPassword As String, _ 
                                    ByVal sDbName As String, _ 
                                    ByVal lPortNum As Long, _ 
                                    ByVal sSocketName As String, _ 
                                    ByVal lFlags As Long) As Long 以下我的使用的一参考 
    Friend Function OpenConnection(ByVal sHostName As String, _ 
                                  ByVal sUserName As String, _ 
                                  ByVal sPassword As String, _ 
                                  ByVal sDbName As String, _ 
                          Optional ByVal lPortNum As Long = 3306, _ 
                          Optional ByVal lFlags As MYSQL_FLAG, _ 
                          Optional ByVal cs_name As String) As MYSQL_CONNECTION_STATE 
    Dim lNumber As Long 
        
        Me.CloseConnection 
        OpenConnection = m_State     m_Hostname = sHostName 
        m_Username = sUserName 
        m_Password = sPassword 
        m_DbName = sDbName 
        m_PortNum = lPortNum 
        
        m_MYSQL = mysql_init(m_MYSQL) 
        
        If m_MYSQL = 0 Then 
            Err.Raise vbObjectError + 1, "DBConn.OpenConnection", "Couldn't obtain a connection handler." 
            Exit Function 
        Else 
            If UBound(MyOptArr) > 0 Then 
                Dim i As Integer 
                'set options 
                For i = 1 To UBound(MyOptArr) 
                    Select Case MyOptArr(i).eOption 
                    Case MYSQL_OPT_CONNECT_TIMEOUT 
                        mysql_options m_MYSQL, MYSQL_OPT_CONNECT_TIMEOUT, MyOptArr(i).sArg 
                    Case MYSQL_OPT_COMPRESS 
                        mysql_options m_MYSQL, MYSQL_OPT_COMPRESS, 0 
                    Case MYSQL_OPT_NAMED_PIPE 
                        mysql_options m_MYSQL, MYSQL_OPT_NAMED_PIPE, 0 
                    Case MYSQL_INIT_COMMAND 
                        mysql_options m_MYSQL, MYSQL_INIT_COMMAND, MyOptArr(i).sArg 
                    Case MYSQL_READ_DEFAULT_FILE 
                        mysql_options m_MYSQL, MYSQL_READ_DEFAULT_FILE, MyOptArr(i).sArg 
                    Case MYSQL_READ_DEFAULT_GROUP 
                        mysql_options m_MYSQL, MYSQL_READ_DEFAULT_GROUP, MyOptArr(i).sArg 
                    End Select 
                Next i 
            End If         If mysql_real_connect(m_MYSQL, m_Hostname, m_Username, m_Password, m_DbName, m_PortNum, "CESMIS", m_Flags) = 0 Then 
                CheckForError "DBConn.OpenConnection" 
                RealClose 
            Else 
                m_State = MY_CONN_OPEN 
                
                If cs_name <> "" Then 
                  lNumber = mysql_set_character_set(m_MYSQL, cs_name) 
                  If lNumber > 0 Then 
                      CheckForError "DBConn.OpenConnection" 
                  End If 
                End If 
            End If 
        End If     OpenConnection = m_State 
    End Function