以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]如何将二进制数组写到外部数据库中?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=75002)

--  作者:新福星
--  发布时间:2015/9/24 11:28:00
--  [求助]如何将二进制数组写到外部数据库中?
有一个二进制数组buff1 (256Byte),希望把这些数据写入到Access数据库中。
按要求在外部数据中建个表,加一列数据类型为OLE对象,且此列并未加载。

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

--  作者:大红袍
--  发布时间:2015/9/24 11:30:00
--  

什么二进制数组?

 

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

 


--  作者:新福星
--  发布时间:2015/9/24 11:31:00
--  
就是dim buff1(256) as byte
--  作者:新福星
--  发布时间:2015/9/24 11:33:00
--  
帮助中介绍了两种方式 一种是图片 一种是附加的Word文件。如果是纯二进制数组,该如何写入呢?
--  作者:大红袍
--  发布时间: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)


--  作者:新福星
--  发布时间: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 里的数字转成字符看看,这时就出错了!

--  作者:大红袍
--  发布时间:2015/9/24 11:42:00
--  

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

 

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


--  作者:新福星
--  发布时间:2015/9/24 11:47:00
--  
哦!我明白了 转换字串时,是把0-255转换成字串,而不是取 Chr(0-255) 。这好象有点太浪费外存了!
--  作者:大红袍
--  发布时间: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