前提是你用ADO找开表工程--->引用--->Microsoft ActiveX Data Object 2.x(版本号) Dim CN As New ADODB.Connection '定义数据库的连接 Dim Rs As New ADODB.Recordset CN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\NWIND.MDB;Persist Security Info=False" CN.Open Rs.CursorLocation = adUseClient Rs.Open "select * from table", CN, adOpenDynamic, adLockBatchOptimistic
这段代码写在什么地方,谢谢。 sorry,我刚学vb,什么都不懂。
'将图片写数据库 Public Sub SubPicToDb(strDB As String, strField As String, sqlCon As String, strFileName As String) Dim adoStream As New ADODB.Stream Dim strCon As String On Error GoTo ErrToDB Set pRst = New ADODB.Recordset strCon = "select " & strField & " from " & strDB & " where " & sqlCon pRst.Open strCon, pConn, adOpenKeyset, adLockOptimisticadoStream.Type = adTypeBinary adoStream.Open adoStream.LoadFromFile strFileName pRst(strField).AppendChunk adoStream.Read pRst.UpdatepRst.Close adoStream.Close Set adoStream = Nothing Set pRst = Nothing Exit Sub ErrToDB: MsgBox Err.Description, vbOKOnly + vbExclamation, "提示" End Sub'从数据库中提取二进制数据 Public Sub SubDbToPic(strDB As String, strField As String, sqlCon As String, objPic As Object) Dim adoStream As New ADODB.StreamDim strCon As String Dim strFileName As String Dim TempFileName As String On Error GoTo ErrPic Set pRst = New ADODB.Recordset TempFileName = App.Path & "\TempFile.tmp" strCon = "select " & strField & " from " & strDB & " where " & sqlCon adoStream.Type = adTypeBinary adoStream.Open pRst.Open strCon, pConn, adOpenDynamic, adLockPessimistic 'If pRst.RecordCount > 0 Then adoStream.Write pRst(strField).GetChunk(pRst(strField).ActualSize) adoStream.SaveToFile TempFileName, IIf(Len(Trim(Dir(TempFileName, vbNormal + vbHidden))) > 0, adSaveCreateOverWrite, adSaveCreateNotExist) objPic.Picture = LoadPicture(TempFileName) Kill TempFileName 'End If pRst.Close adoStream.Close Set adoStream = Nothing Set pRst = Nothing Exit Sub ErrPic: If pRst.State = adStateOpen Then pRst.Close If adoStream.State = adStateOpen Then adoStream.Close Set pRst = Nothing Set adoStream = Nothing End Sub
Image1.Picture = LoadPicture("f:\aa.bmp")改成
Image1.Picture = LoadPicture(rs.fields("字段"))
Dim CN As New ADODB.Connection '定义数据库的连接
Dim Rs As New ADODB.Recordset CN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\NWIND.MDB;Persist Security Info=False"
CN.Open Rs.CursorLocation = adUseClient
Rs.Open "select * from table", CN, adOpenDynamic, adLockBatchOptimistic
Public Sub SubPicToDb(strDB As String, strField As String, sqlCon As String, strFileName As String)
Dim adoStream As New ADODB.Stream
Dim strCon As String
On Error GoTo ErrToDB
Set pRst = New ADODB.Recordset
strCon = "select " & strField & " from " & strDB & " where " & sqlCon
pRst.Open strCon, pConn, adOpenKeyset, adLockOptimisticadoStream.Type = adTypeBinary
adoStream.Open
adoStream.LoadFromFile strFileName
pRst(strField).AppendChunk adoStream.Read
pRst.UpdatepRst.Close
adoStream.Close
Set adoStream = Nothing
Set pRst = Nothing
Exit Sub
ErrToDB:
MsgBox Err.Description, vbOKOnly + vbExclamation, "提示"
End Sub'从数据库中提取二进制数据
Public Sub SubDbToPic(strDB As String, strField As String, sqlCon As String, objPic As Object)
Dim adoStream As New ADODB.StreamDim strCon As String
Dim strFileName As String
Dim TempFileName As String
On Error GoTo ErrPic
Set pRst = New ADODB.Recordset
TempFileName = App.Path & "\TempFile.tmp"
strCon = "select " & strField & " from " & strDB & " where " & sqlCon
adoStream.Type = adTypeBinary
adoStream.Open
pRst.Open strCon, pConn, adOpenDynamic, adLockPessimistic
'If pRst.RecordCount > 0 Then
adoStream.Write pRst(strField).GetChunk(pRst(strField).ActualSize)
adoStream.SaveToFile TempFileName, IIf(Len(Trim(Dir(TempFileName, vbNormal + vbHidden))) > 0, adSaveCreateOverWrite, adSaveCreateNotExist)
objPic.Picture = LoadPicture(TempFileName)
Kill TempFileName
'End If
pRst.Close
adoStream.Close
Set adoStream = Nothing
Set pRst = Nothing
Exit Sub
ErrPic:
If pRst.State = adStateOpen Then pRst.Close
If adoStream.State = adStateOpen Then adoStream.Close
Set pRst = Nothing
Set adoStream = Nothing
End Sub