今天下午一觉睡到5点才起来,就马上开始做项目,简单的说就是在三层模式中解决将图片存储到SQL里和从SQL里调出该图片,这个问题积累了几天了一直没去解决。。
想了N久,改了N多,调了N久,总算全部写出来,自认为写对了,结果一运行,选好用户图片,然后添加,晕。。。。 提示错误。。。 后来调了N久才发现这里错了:
注:User.U_Image 是获得图片的二进制代码。。
'* Function Name: AddUser
'* Option Desc: 增加一个用户
Public Function AddUser(ByRef User As clsItemUser) As Boolean
On Error GoTo AddErr
Dim strSQL As String
strSQL = "Insert Into T14_CS_User Values( " & User.U_Id & ",'" & User.U_Name & "','" & User.U_Pwd & _
"','" & User.U_Sex & "'," & User.U_Age & ",'" & User.U_Duty & "','" & User.U_Tel & "','" & _
User.U_Address & "','" & User.U_Image & "','" & User.U_ImageName & "')"
conConnection.Execute (strSQL)
AddUser = True
Exit Function
AddErr:
MsgBox Err.Number & Err.Description
Err.Clear
AddUser = False
End Function
本来以为是User.U_Image存的二进制代码错了,一直调式这个,N久后也没调对,后来干脆就把我以前写的一个将图片存储到SQL里的例子拿出来对照了一下。 马上就发现哪里错了,一改,在运行. OK.。 添加成功。 改成如下:
'* Function Name: AddUser
'* Option Desc: 增加一个用户
Public Function AddUser(ByRef User As clsItemUser) As Boolean
On Error GoTo AddErr
Dim rcUser As ADODB.Recordset
Set rcUser = New ADODB.Recordset
rcUser.Open "Select * From T14_CS_User", conConnection, adOpenStatic, adLockOptimistic, -1
rcUser.AddNew
rcUser.Fields("U_Id").Value = User.U_Id
rcUser.Fields("U_Name").Value = User.U_Name
rcUser.Fields("U_Pwd").Value = User.U_Pwd
rcUser.Fields("U_Sex").Value = User.U_Sex
rcUser.Fields("U_Age").Value = User.U_Age
rcUser.Fields("U_Duty").Value = User.U_Duty
rcUser.Fields("U_Tel").Value = User.U_Tel
rcUser.Fields("U_Address").Value = User.U_Address
rcUser.Fields("U_Image").Value = User.U_Image
rcUser.Fields("U_ImageName").Value = User.U_ImageName
rcUser.Update
AddUser = True
Exit Function
AddErr:
MsgBox Err.Number & Err.Description
Err.Clear
AddUser = False
End Function
错误:既strSQL执行添加的SQL语句里不能包含User.U_Image二进制代码。如果要添加User.U_Image二进制代码只能要记录集来添加。
希望你不要在犯同样的错误。。 55555555
评论