VBA在MySql中插入Blob数据

时间:2017-09-18 11:47:57

标签: mysql vba mariadb

我安装了一个带有MariaDB的Xampp并创建了一个数据库。当我尝试在数据库中插入新记录时,不会保存第一个字段(FIC_TRA_IDINT)。

当我首先插入除blob字段之外的所有字段时,我没有任何问题,但是当我进行更新并插入blob字段时,第一个字段(FIC_TRA_IDINT)将转换为null。

数据库中的表有4个字段:

  1. FIC_TRA_INDINT VarChar(11)
  2. FIC_F_ANALISIS日期时间
  3. FIC_NOMBRE Varchar(50)
  4. FIC_FICHERO LongBlob
  5. 代码是这样的。与插入新记录或更新记录的代码相同。

    Function AddFileMySql(ByVal strTraIdint As String, ByVal strFileNameIn As String, Optional strFileIn As String)
        Dim cn As New ADODB.Connection
        Dim rs As New ADODB.Recordset
        Dim objStream As New ADODB.Stream
        Dim SQL, strPathBD As String
    
        If strFileIn = vbNullString Then
            arrFile = Split(strFileNameIn, "\")
            strFileIn = arrFile(UBound(arrFile))
            Erase arrFile
        End If
        ' connection to MySQL
        cn.Open "Driver={MySQL ODBC 5.3 ANSI Driver};Server=Server;Port=nPort;Database=dataBase;User=user;Password=pass;Option=3;"
    
        SQL = "SELECT * FROM pci_fichas WHERE FIC_TRA_IDINT='" & strTraIdint & "';"
        rs.Open SQL, cn, adOpenDynamic, adLockOptimistic
    
        'create the stream
        objStream.Type = adTypeBinary
        objStream.Open
        objStream.LoadFromFile strFileNameIn
        objData = objStream.Read
        objStream.Close
    
        'insert or update the stream
        With rs
            If rs.EOF Then
                .AddNew
                rs!FIC_TRA_IDINT = strTraIdint
            End If
            rs!FIC_F_ANALISIS = Now
            rs!FIC_NOMBRE = strFileIn
            rs!FIC_FICHERO = objData
            .Update
            .Close
        End With
        'close connection
        cn.Close
    End Function
    

    其值传递给Null的唯一字段是第一个(FIC_TRA_IDINT),只有第一个,其余的filed保持其值。 如果在访问数据库中插入记录,相同的代码可以正常工作。

0 个答案:

没有答案