以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于给外部数据库增加二进制文件  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=192298)

--  作者:fvcfox
--  发布时间:2024/6/12 8:17:00
--  关于给外部数据库增加二进制文件
请教老师,如下代码未发现外部数据增加新记录
Dim cmd As New SQLCommand
cmd.Connection Name = "cwsj"
cmd.CommandText = "Insert Into 文件服务器文件(files) Values(?)"
Dim ImageByte() As Byte = System.IO.File.ReadAllBytes("D:\\b.rar") \'读取文件流,并将读到的二进制数据放入数组ImageByte中,
cmd.Parameters.Add("@files", ImageByte)
cmd.ExecuteNonQuery
MessageBox .Show(1)
[此贴子已经被作者于2024/6/12 8:22:53编辑过]

--  作者:有点蓝
--  发布时间:2024/6/12 8:35:00
--  
我测试没有问题。确定files是image类型的列?

试试列名加上中括号
cmd.CommandText = "Insert Into 文件服务器文件([files]) Values(?)"

--  作者:fvcfox
--  发布时间:2024/6/12 10:02:00
--  
确定 files 列是image,再加了中括号试过,程序是可以运行到messagebox的,但我去cwsj下的“文件服务器文件“ 表是没有增加有记录的
--  作者:fvcfox
--  发布时间:2024/6/12 10:15:00
--  
是可以的,忘了是超过200条的那些记录
--  作者:有点蓝
--  发布时间:2024/6/12 10:17:00
--  
看看是不是连接到其它数据库了

到后台数据库看,刷新一下表格,好像image列是直接看不到数据的,重新查询一下看看有没有新增到行

--  作者:fvcfox
--  发布时间:2024/6/12 10:22:00
--  
现在增加了一个701458KB的a.zip文件时,出错如下

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20240612102008.png
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2024/6/12 10:55:00
--  
内存溢出。关闭项目,重新启动项目测试
--  作者:fvcfox
--  发布时间:2024/6/12 14:15:00
--  
用下列代码做下载,小文件可成功,但大文件,比如有个300m的文件就出错
Dim cmd As New SQLCommand
cmd.C
 cmd.CommandText = "s elect files,文件名,文件名后缀 from {文件服务器文件} where 选中=1 " \'这里第八列是二进制列
Dim dt As DataTable = cmd.ExecuteReader
For Each dr As DataRow In dt.DataRows 
Dim imagebytes As Byte() = dr("files")
MessageBox.Show("D:\\" & dr("文件名") & dr("文件名后缀"))
System.IO.File.writeAllBytes("D:\\" & dr("文件名") & dr("文件名后缀"), imagebytes)
MessageBox.Show(2)
Next

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20240612140600.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20240612141532.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2024/6/12 14:16:10编辑过]

--  作者:有点蓝
--  发布时间:2024/6/12 14:28:00
--  
这个没有办法,foxtable是32位程序,最大只能用到约1G内存。

试试每次使用释放一下内存
……
Dim ImageByte() As Byte = System.IO.File.ReadAllBytes("D:\\b.rar") \'读取文件流,并将读到的二进制数据放入数组ImageByte中,
cmd.Parameters.Add("@files", ImageByte)
cmd.ExecuteNonQuery
ImageByte=nothing
GC.Collect()
MessageBox .Show(1)

--  作者:fvcfox
--  发布时间:2024/6/12 14:50:00
--  
加了释放代码也还是不行,请问下个FB版本可作改善吗?