InsertRecord(id, Convert.ToByte(dr[2]), Convert.ToString(dr[0]), Convert.ToString(dr[3]), Convert.ToString(dr[1]), Convert.ToString(dr[4]), Convert.ToString(dr[5])); //就是这儿报错,,先试Convert.ToByte(dr[2].ToString()), 
不行的话调试看一下dr[2]是什么值

解决方案 »

  1.   

    public void InsertRecord(string id, byte[] image, ....
    InsertRecord(id, (byte[])dr[2],
      

  2.   

    sorry,没看清楚,参考一下这段代码吧,
    public void myInsert()
    {
    Int32 intFileLength;
    string strFileType;
    string strFileName;
    Stream stmFile;
    strFileName="";
    strFileName=FileBox1.PostedFile.FileName;
    intFileLength=FileBox1.PostedFile.ContentLength;
    strFileType=FileBox1.PostedFile.ContentType;
    //strFileType="dd";
    stmFile=FileBox1.PostedFile.InputStream;
    byte[] ByteFile=new byte[intFileLength];
    stmFile.Read(ByteFile,0,intFileLength);
    SqlConnection myCon=new SqlConnection("server=(local);database=test;uid=sa;pwd=");
    string strCom="INSERT INTO FileByField Values(@Name,@FileData,@FileType,@FileLength)";
    SqlCommand myCom=new SqlCommand(strCom,myCon);
    myCom.Parameters.Add("@Name",SqlDbType.Char,255);
    myCom.Parameters.Add("@FileData",SqlDbType.Image);
    myCom.Parameters.Add("@FileType",SqlDbType.Char,255);
    myCom.Parameters.Add("@FileLength",SqlDbType.BigInt);

    myCom.Parameters["@Name"].Value=strFileName.Trim();
    myCom.Parameters["@FileData"].Value=ByteFile;
    myCom.Parameters["@FileType"].Value=strFileType;
    myCom.Parameters["@FileLength"].Value=intFileLength;
    myCon.Open();
    try
    { myCom.ExecuteNonQuery(); }
    catch(SqlException e)
    {
    if(e.Number==2627)
    Response.Write("PrimaryKey Error");
    else
    Response.Write("Other Error");
    }
    myCon.Close();
    BindData();
    }
      

  3.   

    Stream stmFile;
    strFileName="";
    strFileName=FileBox1.PostedFile.FileName;
    intFileLength=FileBox1.PostedFile.ContentLength;
    strFileType=FileBox1.PostedFile.ContentType;
    //strFileType="dd";
    stmFile=FileBox1.PostedFile.InputStream;
    byte[] ByteFile=new byte[intFileLength];
    stmFile.Read(ByteFile,0,intFileLength);
    关键在这,你要建一个Stream,把FileBox1.PostedFile,InputStream,读到一个byte[]中
    然后赋值给image字段
      

  4.   

    读取后这样赋值就行
    dr[2] = ByteFile;调用时用
    InsertRecord(id, dr[2], Convert.ToString(dr[0]), Convert.ToString(dr[3]), Convert.ToString(dr[1]), Convert.ToString(dr[4]), Convert.ToString(dr[5]));

    InsertRecord(id, (byte[])dr[2], Convert.ToString(dr[0]), Convert.ToString(dr[3]), Convert.ToString(dr[1]), Convert.ToString(dr[4]), Convert.ToString(dr[5]));
    都行,因为ByteFile已是byte[]了,不需要转换也行了