//专门修改数据库,把图片加进去
OleDbConnection conn=new OleDbConnection();
conn.ConnectionString="Provider=\"MSDAORA.1\";"+Data.DB.ConnectionString; string sql1="update VIRESCENCEMAR set 图像资料=?  where 序号="+int.Parse(this.txt序号.Text.Trim()); OleDbCommand cmd=new OleDbCommand(sql1,conn);
cmd.Parameters.Add("?",OleDbType.Binary,FileLength).Value=FileByteArray;
conn.Open();
cmd.ExecuteNonQuery();

解决方案 »

  1.   

    HttpPostedFile  UpFile=UP_FILE.PostedFile;
    int FileLength  =  UpFile.ContentLength;          //记录文件长度  
    try 
    {  

    Byte[]  FileByteArray  =  new  Byte[FileLength];      //图象文件临时储存Byte数组  
    Stream  StreamObject  =  UpFile.InputStream; //建立数据流对像  
    //读取图象文件数据,FileByteArray为数据储存体,0为数据指针位置、FileLnegth为数据长度  
    StreamObject.Read(FileByteArray,0,FileLength);
    已经转化了,和上面是连在一起的
      

  2.   

    Dim UpFile As HttpPostedFile = UP_FILE.PostedFile
         FileLength = UpFile.ContentLength
         Dim FileByteArray(FileLength) As Byte
         Dim StreamObject As IO.Stream = UpFile.InputStream
         StreamObject.Read(FileByteArray, 0, FileLength)
         If (FileLength > 0) Then
           sqlstring="insert into 表(imagedata) values( imageData=@image )where 條件"
           '連接語句(略過)
           Dim comObj As New SqlClient.SqlCommand(sqlstring, con)
           comObj.Parameters.Add("@image", SqlDbType.Binary, FileLength).Value = FileByteArray
          
         end if
      

  3.   

    哦,我用的是VB.net。但也差別不大。
    關鍵是傳遞給sql語句時用一個參數@image。直接傳好像不行。
      

  4.   

    和我的是一样的啊,我的怎么显示的时候:row["img"]为system.DbNull,不知道是为什么
      

  5.   

    數據庫裡那個字段裡什麼也沒有?還是有一段二進制代碼?!
    奇怪我的就沒有問題了。
    哦。我想起來了。你是不是在這之間多插了一個向服務器回傳過的代碼。
    我以前做的時候也是這樣,因為一回傳的話,那個UP_File裡的路徑字符串就沒有了。
    這個問題我還沒有解決掉。
      

  6.   

    我的所有代码在这里:
    //首先提取图片数据资料
    HttpPostedFile  UpFile=UP_FILE.PostedFile;
    int FileLength  =  UpFile.ContentLength;          //记录文件长度  
    try 
    {  

    Byte[]  FileByteArray  =  new  Byte[FileLength];      //图象文件临时储存Byte数组  
    Stream  StreamObject  =  UpFile.InputStream; //建立数据流对像  
    //读取图象文件数据,FileByteArray为数据储存体,0为数据指针位置、FileLnegth为数据长度  
    StreamObject.Read(FileByteArray,0,FileLength);

    //添加到数据库中去
    string sql="Update VIRESCENCEMAR set  "+
    "航道名称='"+this.txt航道名称.Text.Trim().Replace("'","''")+"', "+
    "损坏地点='"+this.txt损坏地点.Text.Trim().Replace("'","''")+"', "+
    "指定的地图上的点的ID="+this.txt指定的地图上的点的ID.Text.Trim()+", "+
    "发现时间=to_date('"+txt发现时间.Text.Trim().Replace("'","''")+"','yyyyMMdd'), "+
    "损坏长度="+this.txt损坏长度.Text.Trim()+", "+
    "损坏程度="+this.txt损坏程度.Text.Trim()+", "+
    "损坏原因='"+this.txt损坏原因.Text.Trim().Replace("'","''")+"', "+
    "处理方法="+this.txt处理方法.Text.Trim()+", "+
    "处理时间=to_date('"+txt处理时间.Text.Trim()+"','yyyyMMdd'), "+
    "处理单位='"+this.txt处理单位.Text.Trim()+"', "+
    "备注='"+this.txt备注.Text.Trim().Replace("'","''")+"', "+
    "相关的护岸工程='"+this.txt相关的护岸工程.Text.Trim().Replace("'","''")+"' where 序号="+this.txt序号.Text.Trim(); WRIIPWeb.Data.DB.Execute(sql);
                    //专门修改数据库,把图片加进去
    OleDbConnection conn=new OleDbConnection();
    conn.ConnectionString="Provider=\"MSDAORA.1\";"+Data.DB.ConnectionString; string sql1="update VIRESCENCEMAR set 图像资料=?  where 序号="+int.Parse(this.txt序号.Text.Trim()); OleDbCommand cmd=new OleDbCommand(sql1,conn);
    cmd.Parameters.Add("?",OleDbType.Binary,FileLength).Value=FileByteArray;
    conn.Open();
    cmd.ExecuteNonQuery(); Response.Write("<script>alert('保存成功')</script>");
      

  7.   

    你設斷點時查出filelenght是大於0的嗎?
      

  8.   

    为什么lwqdongtai(小強(asp.net)) 的字是繁体了!呵呵..............
      

  9.   

    兄弟,我今天比較忙。我看你還是在google上搜一下吧。設斷點調。對不住了兄弟。呵。
      

  10.   

    各位,问题已经解决了,我用的是Oracle的数据库,只能用OracleCommand,而不能用OleDbCommand,所以错误了,谢谢各位的帮忙,散分