Stream myStream=new MemoryStream();
this.pictureBox1.Image.Save(myStream,System.Drawing.Imaging.ImageFormat.Jpeg );
myStream.Position = 0;
BinaryReader br = new BinaryReader(myStream);
byte[] imagebyte=br.ReadBytes((int)myStream.Length);

SqlCommand cmd = new SqlCommand("insert into PeopleInfo (CName,CPhoto) VALUES ('"+ this.textBox1.Text   +"','"+ imagebyte +"')",conn);
cmd.ExecuteNonQuery(); CPhoto为Image字段,
执行这些语句并没有任何错,但我去看了SQL数据库,写进去CPhoto值为一样,都是0x53797374656D2E427974655B5D(System.byte[]);意思就是每次写进去的数据为System.byte[]
我的天呀,他为什么不写里面的数据,只是写这个TYPE,烦呀,我检查了imagebyte.Length,那有好几K,为什么不写内容而去写那的类型,请高手救命!(写出代码!)
其实就是怎么样把byte[]存到SQL的image字段,但是我一直搞不好!

解决方案 »

  1.   

    用的是oracle,把byte[]存放在blob类型的字段里,没有问题,不知道sql是怎么做的。
      

  2.   

    不要拼字符串,用SQLCommand和SQLParemeter来做。最好转换成SqlBinary类型。
      

  3.   

    我这是一个参数,你是两个参数,不过整体思路是这样子的string strSql = "insert into t values(@image)";
    // System.Data.SqlClient.SqlParameter par = new SqlParameter("@image",SqlDbType.Image);
    // command = new SqlCommand(strSql,conn);
    // par.Value = b;
    // command.Parameters.Add(par);
    // conn.Open();
    // command.ExecuteNonQuery();
    // conn.Close();
      

  4.   

    System.IO.FileStream reader = File.Create("一个图片位置");;
    byte[] b = new byte[reader.Length];
    reader.reader(b,0,b.Length);这几句加在最上面就行了
      

  5.   

    建议转换成 SqlBinaray 类型
      

  6.   

    byte[] imagebytes=null;
    FileStream fs=new FileStream(Image_path,FileMode.Open);
    BinaryReader br=new BinaryReader(fs);
    imagebytes=br.ReadBytes(br.Length);
    SqlParameter parInput22=cmd.Parameters.Add("@员工图片",SqlDbType.Image);
    parInput22.Direction=ParameterDirection.Input;
    cmd.Parameters["@员工图片"].Value=imagebytes;
    cmd.ExecuteNonQuery();