Foxtable(狐表)用户栏目专家坐堂 → [求助]如何将二进制数组写到外部数据库中?


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

主题:[求助]如何将二进制数组写到外部数据库中?

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


加好友 发短信
等级:八尾狐 帖子:1964 积分:15604 威望:0 精华:0 注册:2011/7/16 20:59:00
[求助]如何将二进制数组写到外部数据库中?  发帖心情 Post By:2015/9/24 11:28:00 [只看该作者]

有一个二进制数组buff1 (256Byte),希望把这些数据写入到Access数据库中。
按要求在外部数据中建个表,加一列数据类型为OLE对象,且此列并未加载。

SQLSetValue(Filed,Value)用这条语句写入出现错误!
如果改用SQL语句的Update语另,无法拼成SQL字串。
求助如何把二进制数组写到外部数据库指定表列中呢?谢谢
[此贴子已经被作者于2015/9/24 11:30:28编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/9/24 11:30:00 [只看该作者]

什么二进制数组?

 

http://www.foxtable.com/help/topics/2950.htm

 


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


加好友 发短信
等级:八尾狐 帖子:1964 积分:15604 威望:0 精华:0 注册:2011/7/16 20:59:00
  发帖心情 Post By:2015/9/24 11:31:00 [只看该作者]

就是dim buff1(256) as byte

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


加好友 发短信
等级:八尾狐 帖子:1964 积分:15604 威望:0 精华:0 注册:2011/7/16 20:59:00
  发帖心情 Post By:2015/9/24 11:33:00 [只看该作者]

帮助中介绍了两种方式 一种是图片 一种是附加的Word文件。如果是纯二进制数组,该如何写入呢?

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/9/24 11:34:00 [只看该作者]

直接保存成字符。参考

 

Dim str As String = "联想Aabc"
Dim bs() As Byte = Encoding.Unicode.GetBytes(str)
Dim nstr As String = ""
For Each b As Byte In bs
    nstr &= b.ToString("x") & ","
Next
nstr = nstr.Trim(",")
output.show(nstr)

 

'----------------转回去

 

Dim strAry() As String = nstr.Split(",")
Dim bys(strAry.Length-1) As Byte
For i As Integer = 0 To strAry.Length - 1
    Bys(i) = Byte.Parse(strAry(i), System.Globalization.NumberStyles.HexNumber)
Next
Dim bstr As String = Encoding.Unicode.GetString(bys)
output.show(bstr)


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


加好友 发短信
等级:八尾狐 帖子:1964 积分:15604 威望:0 精华:0 注册:2011/7/16 20:59:00
  发帖心情 Post By:2015/9/24 11:39:00 [只看该作者]

这个前题是str字串是有效的字符。随机二进制转换成字符时会有很多非法字符,有了这些非法字符时, dr.SQLSetValue("列名1",zwzc1)这个语句就会告警的。

Dim buff1(256) As Byte
Dim buff2(256) As Byte
For i As Integer=0 To 255
    buff1(i) = Rand.Next(100)
    buff2(i) = Rand.Next(100)
Next
用buff1 里的数字转成字符看看,这时就出错了!

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/9/24 11:42:00 [只看该作者]

1、保存的时候转成字符串。

 

2、还原的时候,没必要转成字符串


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


加好友 发短信
等级:八尾狐 帖子:1964 积分:15604 威望:0 精华:0 注册:2011/7/16 20:59:00
  发帖心情 Post By:2015/9/24 11:47:00 [只看该作者]

哦!我明白了 转换字串时,是把0-255转换成字串,而不是取 Chr(0-255) 。这好象有点太浪费外存了!

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/9/24 11:58:00 [只看该作者]

那你也可以存入二进制列,但要用sql的update语句,把字符合并成如 0x5480F3604100 后保存。

 

http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=8059&authorid=0&page=1&star=1

 


 回到顶部