以文本方式查看主题 - 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文件时,出错如下 |
-- 作者:有点蓝 -- 发布时间: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
[此贴子已经被作者于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版本可作改善吗? |