Foxtable(狐表)用户栏目专家坐堂 → 关于给外部数据库增加二进制文件


  共有1933人关注过本帖树形打印复制链接

主题:关于给外部数据库增加二进制文件

帅哥哟,离线,有人找我吗?
fvcfox
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:569 积分:5405 威望:0 精华:0 注册:2020/5/7 13:05:00
关于给外部数据库增加二进制文件  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110443 积分:562081 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/6/12 8:35:00 [只看该作者]

我测试没有问题。确定files是image类型的列?

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

 回到顶部
帅哥哟,离线,有人找我吗?
fvcfox
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:569 积分:5405 威望:0 精华:0 注册:2020/5/7 13:05:00
  发帖心情 Post By:2024/6/12 10:02:00 [只看该作者]

确定 files 列是image,再加了中括号试过,程序是可以运行到messagebox的,但我去cwsj下的“文件服务器文件“ 表是没有增加有记录的

 回到顶部
帅哥哟,离线,有人找我吗?
fvcfox
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:569 积分:5405 威望:0 精华:0 注册:2020/5/7 13:05:00
  发帖心情 Post By:2024/6/12 10:15:00 [只看该作者]

是可以的,忘了是超过200条的那些记录

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110443 积分:562081 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/6/12 10:17:00 [只看该作者]

看看是不是连接到其它数据库了

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

 回到顶部
帅哥哟,离线,有人找我吗?
fvcfox
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:569 积分:5405 威望:0 精华:0 注册:2020/5/7 13:05:00
  发帖心情 Post By:2024/6/12 10:22:00 [只看该作者]

现在增加了一个701458KB的a.zip文件时,出错如下

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


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110443 积分:562081 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/6/12 10:55:00 [只看该作者]

内存溢出。关闭项目,重新启动项目测试

 回到顶部
帅哥哟,离线,有人找我吗?
fvcfox
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:569 积分:5405 威望:0 精华:0 注册:2020/5/7 13:05:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110443 积分:562081 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:569 积分:5405 威望:0 精华:0 注册:2020/5/7 13:05:00
  发帖心情 Post By:2024/6/12 14:50:00 [只看该作者]

加了释放代码也还是不行,请问下个FB版本可作改善吗?

 回到顶部
总数 14 1 2 下一页