ACCESS数据库升级到SQL数据库(二) 图片的存储
1、使用ODBCADAPTER进行更新,需要加入Dim db As New Odbc.OdbcCommandBuilder(ada)
1 dim myfilestream As New System.IO.FileStream(filename, IO.FileMode.Open) 2 Dim data(myfilestream.Length) As Byte 3 4 myfilestream.Read(data, 0, myfilestream.Length) 5 myfilestream.Close() 6 7 Dim ada As Odbc.OdbcDataAdapter 8 Dim rs As New DataTable 9 Dim c_str As String 10 c_str = "select * from *" 11 If connect.State <> ConnectionState.Open Then 12 connect.Open() 13 End If 14 ada = New Odbc.OdbcDataAdapter(c_str, connect) 15 ada.Fill(rs) 16 rs.Rows(0)("图片") = data 17 '必须加入下一行进行更新 18 Dim db As New Odbc.OdbcCommandBuilder(ada) 19 ada.Update(rs) 20 ada.Dispose()
2、使用SQL语句储存
Dim c_str As String c_str = "update 制件信息 set 图片=@data where *" Dim mycommand As New Odbc.OdbcCommand(c_str) mycommand.CommandType = CommandType.StoredProcedure mycommand.Connection = connect Dim p As New Odbc.OdbcParameter("@data", Odbc.OdbcType.Image) p.Value = data mycommand.Parameters.Add(p) If connect.State <> ConnectionState.Open Then connect.Open() End If Try mycommand.ExecuteNonQuery() Catch ex As Exception MsgBox("图片写人失败" & vbNewLine & ex.Message) End Try
调试过程中总出现无效的精度值错误,将代码改为
Dim c_str As String c_str = "update 制件信息 set 图片=? where *" Dim mycommand As New Odbc.OdbcCommand(c_str) mycommand.CommandType = CommandType.StoredProcedure mycommand.Connection = connect Dim p As New Odbc.OdbcParameter("@P1", Odbc.OdbcType.Image) p.Value = data mycommand.Parameters.Add(p) If connect.State <> ConnectionState.Open Then connect.Open() End If Try mycommand.ExecuteNonQuery() Catch ex As Exception MsgBox("图片写人失败" & vbNewLine & ex.Message) End Try
顺利通过调试。。。。。。。。。。。居然要采用?这种古老的变量申明方式,彻底无语
浙公网安备 33010602011771号