[질문] MySql에 이미지 저장에 대한 질문드립니다.
------------------------------------
프로그램 설명: 이미지를 MySql에 저장
DataBase : MySql
Language : VB 6.0
입력 컬럼 타입 : BLOB
-------------------------------------
MySql에 이미지를 저장할려고 하는데요.
아래와 같은 에러가 납니다.. 어떤 환경을 맞춰줘야 하는 것이 있나요 ?
테스트 해본 사항은 Oracle에는 잘 입력이 되는데..
My-Sql에만 이런 에러가 납니다.
다른 사람의 말로는 Ms-Sql에도 잘 입력이 된다고 하네요..
똑같은 소스인데두요...
아래는 에러 내용입니다.. 먼저 감사드립니다..
----------------- Error 내용 -----------------------------------
2147467259 (80004005) 런타임 오류가 발생하였습니다.
[Microsoft] [ODBC 드라이버 관리자] 잘못된 문자열 또는 버퍼 길이입니다.
-----------------------------------------------------------------
----------------- 소스 원본입니다 -----------------------------
Private Sub Form_Load()
Dim strTemp As String
Dim con As New ADODB.Connection
Dim rs As New ADODB.Recordset
'con.Open ("DSN=kdb;UID=kdb;PWD=kdb;")
con.Open ("DSN=sign;UID=testuser;PWD=test1234;")
con.BeginTrans
sql = ""
sql = sql & vbCrLf & "SELECT file2 "
sql = sql & vbCrLf & " FROM files"
sql = sql & vbCrLf & " WHERE file_size=1"
rs.Open sql, con, adOpenDynamic, adLockOptimistic, adCmdText
strTemp = FileToBLOB("c:\mky.bmp", rs(0), False, 8192)
MsgBox (strTemp)
rs.Update
rs.Close
MsgBox ("모두성공")
End Sub
Public Function FileToBLOB(ByVal imgFilePath As String, _
ByRef objField As ADODB.Field, _
Optional ByVal bUseStream As Boolean = True, _
Optional ByVal lngChunkSize As Long = 8192) As Boolean
On Error Resume Next
Dim objStream As ADODB.Stream
Dim intFreeFile As Integer
Dim lngBytesLeft As Long
Dim lngReadBytes As Long
Dim byBuffer() As Byte
Dim varChunk As Variant
If bUseStream Then
Set objStream = New ADODB.Stream
With objStream
.Type = adTypeBinary
.Open
.LoadFromFile imgFilePath
objField.Value = .Read(adReadAll)
End With
Else
With objField
If (.Attributes And adFldLong) <> 0 Then
intFreeFile = FreeFile
Open imgFilePath For Binary Access Read As #intFreeFile
lngBytesLeft = LOF(intFreeFile)
Do Until lngBytesLeft <= 0
If lngBytesLeft > lngChunkSize Then
lngReadBytes = lngChunkSize
Else
lngReadBytes = lngBytesLeft
End If
ReDim byBuffer(lngReadBytes)
Get #intFreeFile, , byBuffer()
objField.AppendChunk byBuffer()
lngBytesLeft = lngBytesLeft - lngReadBytes
DoEvents
Loop
Close #intFreeFile
Else
Err.Raise -10000, "FileToBLOB", _
"The Database Field does Not support Long Binary Data."
End If
End With
End If
If Err.Number <> 0 Or Err.LastDllError <> 0 Then
FileToBLOB = False
Else
FileToBLOB = True
End If
End Function
댓글 달기