以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- SQLInsertFile问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=78182) |
-- 作者:askbang -- 发布时间:2015/12/3 16:13:00 -- SQLInsertFile问题 对MSSQL添加行后,执行了 SQLInsertFile 添加二进制图片,系统总是提示对象名 "xxx" 无效,其中 xxx是数据源名称,可是查看数据表,除了图片没插入成功,其他数据已正常插入了,我也检查了图片列的设置确实是图片列, 不知为何?
\'以上代码略 Dim cr As Row = tb.AddNew()
Dim dlg As New OpenFileDialog |
-- 作者:大红袍 -- 发布时间:2015/12/3 16:17:00 -- 你的图片列不是二进制列吧? |
-- 作者:askbang -- 发布时间:2015/12/3 16:39:00 -- 绝对是二进制列。刚才我用了另一种方法测试,发现数据表如果是fill方法加载的也是一样,只有先加载外部表,再插入就不会报错。 |
-- 作者:大红袍 -- 发布时间:2015/12/3 16:46:00 -- 用sql语句插入吧。
Dim fs As New IO.FileStream("D:\\a.JPG" , IO.FileMode.Open , IO.FileAccess.Read) \'用文件流打开图片
|
-- 作者:askbang -- 发布时间:2015/12/3 17:08:00 -- 用你的方法,为何ImageString为空呢?
Dim dlg As New OpenFileDialog |
-- 作者:大红袍 -- 发布时间:2015/12/3 17:15:00 -- 不是空值,msgbox如果字符过多,就不显示了。
你可以用 output.show |
-- 作者:askbang -- 发布时间:2015/12/3 17:28:00 -- 此法执行时内存占用很高啊,且速度慢,觉得不可取,是否还有其他更好的办法? |
-- 作者:大红袍 -- 发布时间:2015/12/3 17:59:00 -- 以下是引用askbang在2015/12/3 17:28:00的发言:
此法执行时内存占用很高啊,且速度慢,觉得不可取,是否还有其他更好的办法? 那就对应的表,不要用动态fill进来的方式,你在项目把表引用进来,直接在主表那里新增一行数据。 |
-- 作者:Hyphen -- 发布时间:2015/12/4 8:48:00 -- 如果表是通过sqlcommand或者其它方式动态生成的,用新增的行做SQLInsertFile是不行的,只能用加载出来的行来SQLInsertFile,如 Dim cr As Row = tb.AddNew() cr("车牌号") = e.Form.Controls("car_code").Text cr("车辆类型") = e.Form.Controls("car_cat").Text cr.DataRow.Save() Dim drs As List(Of DataRow) = DataTables("tb对应的表").AppendLoad("车牌号 = \'" & cr("车牌号") & "\'" & "其它条件",False) If drs.Count = 1 Then Dim dlg As New OpenFileDialog If dlg.ShowDialog = DialogResult.OK Then drs(0).SQLInsertFile("图片", dlg.FileName) \'插入文件 End If End If |