用SQLClient插入MSSQL数据库图片好做,为什么用OleDB就这么难呢?
con.open();
cmd1.CommandText = "INSERT INTO DevState(StateImage) VALUES (@StateImg)";
cmd1.Parameters.Add("StateImg", SqlDbType.Image);
cmd1.Parameters["StateImg"].Value = picbyte;
cmd1.ExecuteNonQuery();
con.Close();
改成用OleDB就不行了,哪位高手来救命啊!

解决方案 »

  1.   

    你用的ole数据类型应该是
    System.Data.OleDb.OleDbType.Binary
      

  2.   

    3楼的办法我试过,在Oracel数据库是这样的,SQL数据库不行。
    继续求助!高人快来救命!
      

  3.   

    要通过二进制流来进行插入图片,因为SQL里面,图片是以二进制保存的!你用insert来进行插入肯定是不得行了.
      

  4.   

    cmd1.Parameters.Add("StateImg", SqlDbType.Image); 
    改为:
    cmd1.Parameters.Add("StateImg", System.Data.OleDb.OleDbType.Binary, length); 
    应该是可以的!
      

  5.   

    用存储过程可以搞定,
    Create Proc picinsert
    @image Image
    As
    Begin
    INSERT INTO picshow(pic) Values (@image)
    End
    GO插入代码调用过程//上穿图象部分
    int intImageSize;
    string strImageType;
    Stream ImageStream;
    //获得文件大小
    intImageSize=this.File1.PostedFile.ContentLength;
    //获得文件类型
    strImageType=this.File1.PostedFile.ContentType;
    //获得读取图片文件的流
    ImageStream=this.File1.PostedFile.InputStream; byte[] buffer=new byte[intImageSize]; 
    int intStatus=ImageStream.Read(buffer,0,intImageSize);
    //获得数据库的连接
    SqlConnection con=new SqlConnection(constr);
    SqlCommand com=new SqlCommand("picinsert",con);
    com.CommandType=CommandType.StoredProcedure; //获得参数
    SqlParameter myParameter5=new SqlParameter("@image",SqlDbType.Image);
    myParameter5.Value=buffer;
    com.Parameters.Add(myParameter5);



    try
    {
    con.Open();
    com.ExecuteNonQuery();
    con.Close();

    }
    catch(Exception emp)
    {
    Response.Write("Insert Failed. Error Details are: "+emp.Message.ToString());
    }
    有个例子是上传图片到sql数据库的,里面有程序例子和数据库。你可以看看
    http://d.download.csdn.net/down/258420/Donny_zhang