SQLSERVER数据中有一个image字段,在DataTable表中怎么建立对应列 
Dim dtMain As New DataTable 
dtMain.Columns.Add("fid", System.Type.GetType("System.Double")) 
dtMain.Columns.Add("fname", System.Type.GetType("System.String")) 
对数字型或字符按这种方式可以建立,但image字段不知道怎么建立??请教各位达人了 
dtMain.Columns.Add("fimage", System.Type.GetType("System.Byte"))这种方式但是由于System.Byte不是数组形式报错 

解决方案 »

  1.   

    请用 System.Type.GetType("System.Byte[]")或typeof(System.Byte[])。
      

  2.   

    image要转化为byte[]型再保存
      

  3.   

    恩,如果保存时要转换成byte[],我现在是image已经保存在数据库中去了,并且已经得到记录集dsTemp,由于业务上数据转换需要,我要将dsTemp中部份数据转到新的DataTable中,所以必须新建一个datatable(dtMain),将需要的数据行ImportRow到新表dtMain中,就碰到我上面所提的问题,需要建立image列
      

  4.   

    如果不能动态建立image列,那只能用最笨的办法,在数据转换时,取的符合条件的值的唯一ID,再重新打开数据集,这样也满足了我的要求,但这样要重新操作一次数据库,总感觉不怎么的
      

  5.   


    namespace ConsoleApplication1
    {
    class Program
        {
            static void Main(string[] args)
            {
                DataTable dt = new DataTable();
                DataColumn c = new DataColumn("image", typeof(byte[]));
                dt.Columns.Add(c);
            }
        }
    }sql的二进制类型与System.Byte[]是对应的 请测试一下。
      

  6.   

    谢谢,xuelun,你提供的例子在c#是正确的,奇怪怎么在vb.net里怎么就不行
      

  7.   

    Byte[]应该可以的,MSDN上这样写的设置 DataType 值对于确保正确创建和更新数据源中的数据非常重要。DataType 属性支持下列 .NET Framework 基数据类型: Boolean Byte Char DateTime Decimal Double Int16 Int32 Int64 SByte Single String TimeSpan UInt16 UInt32 UInt64 以及下列数组类型:Byte[] 
    多试试几种写法看看,比如用typeof或者Type.GetType
      

  8.   

    非常感谢3位,
    xuelun非常抱歉了System.Type.GetType("System.Byte[]")可以,开始一直以为你是按C#的写法手误没有测试,在VB.NET里是对的
      

  9.   

    DataTable dt = new DataTable(); 
                DataColumn c = new DataColumn("image", typeof(Image)); 
                dt.Columns.Add(c);