代码如下
this.sqlDataAdapter1.Fill(this.dataSet1,0,1,"Products");
System.IO.FileStream fs = new System.IO.FileStream(this.openFileDialog1.FileName,System.IO.FileMode.Open,System.IO.FileAccess.Read,System.IO.FileShare.Read);
byte[] img=new Byte[fs.Length];
fs.Read(img,0,(int)fs.Length);
object[] o= new object[6];
o[0]=null;
o[1]=this.textBox_ProductName.Text;//"桔子香水";
o[2]=this.textBox_disp.Text;//"good";
o[3]=int.Parse(this.textBox_Price.Text);
o[4]=img;
o[5]=long.Parse(this.textBox_PSerial.Text);//1364;
this.dataSet1.Tables["Products"].Rows.Add(o);
this.sqlDataAdapter1.Update(this.dataSet1,"Products");
MessageBox.Show("Insert Over");

解决方案 »

  1.   

    你把SqlServer中Image字段的长度改一下
      

  2.   

    在Sqlserver中,image类型的数据固定长度是16位的,我觉得能保存的最大图片应该是2的16次方个字节,即64K。而且这个数值好像不能修改。
      

  3.   

    同意sunnyzhao(风雨彩虹)的说法
      

  4.   

    不是吧,image是2进制类型,我存过几百K甚至上M的数据,一直没有问题,不过我用的是java,至于C#怎样就不知道了。
      

  5.   

    在web.config文件的 <configuration> </configuration>
    中添加<httpRuntime executionTimeout="90" maxRequestLength="100000" useFullyQualifiedRedirectUrl="false" />
      

  6.   

    最到数量是
    Power(2,Power(2,16))
    是2的64K次方
      

  7.   

    倒。。弄错了~~~
    SQL SERVER的16字节不是存放数据大小,而是存放数据的位置地方~~~
      

  8.   

    我存储过2M多的东西,没有问题,理论上限应该是2G。
    你的Object[]可能限制了大小,试试下面的代码:string sSql = "insert into table_image values('ID_1',@byteImage)";
    SqlCommand mCom = new SqlCommand(sSql,xCon);
    Byte[] btyData = ...;
    SqlParameter mySqlParam = 
      new SqlParameter("@byteImage", SqlDbType.VarBinary, btyData.Length, ParameterDirection.Input, false,0,0,null,DataRowVersion.Current,btyData);这样就能自己指定Byte[]的长度
      

  9.   

    我用的是存储过程没问题
    private int insert(string filename, byte[] buffer){
    string connstr="server=;uid=sa;pwd=;database=tec";
    SqlConnection conn=new SqlConnection(connstr);
    SqlCommand cmd =new SqlCommand("ins_image",conn);
    cmd.CommandType=CommandType.StoredProcedure;
    SqlParameter name= new SqlParameter("@name",SqlDbType.VarChar,50);
    name.Direction=ParameterDirection.Input;
    name.Value=filename;
    cmd.Parameters.Add(name);
    SqlParameter pic= new SqlParameter("@pic",SqlDbType.Image,16);
    pic.Direction=ParameterDirection.Input;
    pic.Value=buffer;
    cmd.Parameters.Add(pic);
    conn.Open();
    int i=cmd.ExecuteNonQuery();
    conn.Close();
    return i;
    }CREATE PROCEDURE [ins_image]
    ( @name  [varchar](50),
     @pic  [image])
    AS INSERT INTO [tec].[dbo].[image] 
     (  [name],
     [pic]) 
    VALUES 
    (  @name,
     @pic)
    GO
      

  10.   

    这个问题是这样解决的,使用SqlParameter存储图片时大小可以〉64k,但this.sqlDataAdapter1.Update(this.dataSet1,"Products");
    不可以。 这可能和SqlDataAdapter的局限性有关。 所以我使用tshill(hill) 和 fengyuyan(风雨岩) 的方法都成功了。Image类型存储的只是一个指针,这个问题不是他的错。现在结贴,谢谢各位!
      

  11.   

    至于lionzhf(忆昔) 所说的,因为我做的不是Web程序,所以没去试验。同样感谢lionzhf(忆昔) !