在做一个项目,部分在Linux(gcc)上,部分在Windows(c#)上,数据库是oracle,现在有个要求是:利用oracle做中转,Linux负责存,Windows负责取。难点在BLOB字段,我在Linux上的一个结构体(里面包含各种类型),要先转化成Byte[],然后存入BLOB里,随后windows在取出这个字节序,还原成结构。问题是:
1.两边的数据类型如何统一,比如设计到不定长的字符串时应怎么处理?
2.Linux(GCC)下STRUCT如何转化成Byte[]?
3.存入BLOB类型是一个Byte[],我在windows这边取出来以后有什么好的解析办法吗?
或者其他高人有类似经验的给支点招。感激不尽!

解决方案 »

  1.   

    Linux负责存,Windows负责取
    这个是什么意思?--不管什么意思,数据存储在Oracle中,该怎么存就怎么存,该怎么取就怎么取。
    与是否Linux负责存,Windows负责取,没有关系。两边的数据类型如何统一,比如设计到不定长的字符串时应怎么处理?
    --不是都在Oracle里了么?Linux(GCC)下STRUCT如何转化成Byte[]?
    --序列化啊存入BLOB类型是一个Byte[],我在windows这边取出来以后有什么好的解析办法吗?
    --反序列号啊
      

  2.   

    STRUCT需要序列化为byte[]
    至于怎么序列化,我不熟悉gcc,没法告诉你。
      

  3.   

    将STRUCT作为指针,外加 sizeof 取得长度传过来,这里C#用byte[长度]直接接收。也可以传指针,C#用Marshal.Copy复制到准备好的数组中。
      

  4.   

    C/C++ 的结构先定义好,至于怎么定义看需求,再定义 C# 的与之对应