我安装了一个带有MariaDB的Xampp并创建了一个数据库。当我尝试在数据库中插入新记录时,不会保存第一个字段(FIC_TRA_IDINT)。
当我首先插入除blob字段之外的所有字段时,我没有任何问题,但是当我进行更新并插入blob字段时,第一个字段(FIC_TRA_IDINT)将转换为null。
数据库中的表有4个字段:
代码是这样的。与插入新记录或更新记录的代码相同。
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保持其值。 如果在访问数据库中插入记录,相同的代码可以正常工作。