vb6 在数据库中保存图片

qq_25735875 2017-05-20 11:41:07
用adocommand在SQL2008的表中插入数据,图片用二进制保存
代码:
    Dim adoCn As New ADODB.Connection
Dim adoCmd As New ADODB.Command
Dim buff() As Byte
Dim PropertyBag As New PropertyBag
PropertyBag.WriteProperty "picture", Picture1.Picture
buff = PropertyBag.Contents
If adoCn.State <> adStateOpen Then adoCn.Open conn
adoCmd.ActiveConnection = adoCn
adoCmd.Prepared = False
adoCmd.CommandText = "insert into cu_RequirementPlans(autoid,ID,cMaterielName,cInvCode,picture) values(@autoid,@id,@cmaterielname,@cinvcode,@picture)"
adoCmd.Parameters.Append adoCmd.CreateParameter("@autoid", adInteger, adParamInput, , 1)
adoCmd.Parameters.Append adoCmd.CreateParameter("@id", adBigInt, adParamInput, , 1)
adoCmd.Parameters.Append adoCmd.CreateParameter("@cmaterielname", adVarChar, adParamInput, 255, "cmaterialnamevalue")
adoCmd.Parameters.Append adoCmd.CreateParameter("@cinvcode", adVarChar, adParamInput, 60, "01.0001")
adoCmd.Parameters.Append adoCmd.CreateParameter("@picture", adVarBinary, adParamInput, , buff)
adoCmd.Execute


运行到adocmd.Execute时出错:



另外:
adoCmd.Parameters.Append adoCmd.CreateParameter("@picture", adVarBinary, adParamInput, , buff)
这句也不对。用这似存储过程的方式怎么将图片保存在数据库里呢?(图片一般 只有50K左右)
...全文
1144 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_25735875 2017-05-26
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
注释掉所有On Error Resume Next语句,在VB6 IDE中运行, 出错后点击调试,光标会停在出错的那条语句处, 或者 事先在怀疑可能有逻辑错误的语句处设置断点,运行经过断点时中断, 此时可以在立即窗口中使用 ?变量名 或 ?函数名(函数参数) 或 过程名(参数) 辅助调试。
这个问题已经解决了,把adocommand的commandtext写: insert into 表名(字段1,字段2...) VALUES(?,?......) 这种形式就可以了 现在就是纠结vb6里怎么用存储过程把图片保存到数据库中,Image类型的参数应该怎么传? 比如字段2是image类型的,那我在vb6里adocommand的参数应该用什么类型呢??
qq_25735875 2017-05-26
  • 打赏
  • 举报
回复
引用 2 楼 of123 的回复:
最好不这样做。 因为图片文件占用较多内存,会使数据库表的记录长度大增,从而大大减少虚拟内存中缓存的记录数。这样在数据表查询时,会大大增加磁盘交换的操作,性能大大下降。 其实可以仅在数据库中保存图片文件的路径和文件名。
我上传的图片都是比较小的图片(基本上会控制在300K左右的大小),如果用保存图片文件的路径和文件名,带来的另一个问题就是文件管理的难度,另外,查询的次数会比较少,所以采用这种方式还是可行的。 现在就是纠结vb6里怎么用存储过程把图片保存到数据库中,Image类型的参数应该怎么传?请高手指点
赵4老师 2017-05-22
  • 打赏
  • 举报
回复
注释掉所有On Error Resume Next语句,在VB6 IDE中运行, 出错后点击调试,光标会停在出错的那条语句处, 或者 事先在怀疑可能有逻辑错误的语句处设置断点,运行经过断点时中断, 此时可以在立即窗口中使用 ?变量名 或 ?函数名(函数参数) 或 过程名(参数) 辅助调试。
of123 2017-05-22
  • 打赏
  • 举报
回复
最好不这样做。 因为图片文件占用较多内存,会使数据库表的记录长度大增,从而大大减少虚拟内存中缓存的记录数。这样在数据表查询时,会大大增加磁盘交换的操作,性能大大下降。 其实可以仅在数据库中保存图片文件的路径和文件名。

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧