file_data为image类型字段,为何我在SQL Server执行插入记录的存储过程时用@file_data=null可以正确插入.而在程序中
却提示:操作数类型冲突: nvarchar 与 image 不兼容?? 
Hashtable ht = new Hashtable();
...
ht.Add("file_data",null);
Mapper.Instance().QueryForObject("Procedure.AddNews", ht);

解决方案 »

  1.   

    好像是要用二进制存.
    我以前写的,不是存储过程,但差不多,你可以看看.        private void button1_Click(object sender, EventArgs e)
            {
                Stream ms;
                byte[] picbyte;
                OpenFileDialog ofdSelectPic = new OpenFileDialog();
                ofdSelectPic.ShowDialog();
                ms = ofdSelectPic.OpenFile();
                picbyte = new byte[ms.Length];
                ms.Position = 0;
                ms.Read(picbyte, 0, Convert.ToInt32(ms.Length));            SqlConnection conn = new SqlConnection("server=.;uid=sa;pwd=;database=s");
                conn.Open();
                string sqlstring = "insert into ttt(image) values(@img)";
                SqlCommand cmd = new SqlCommand(sqlstring, conn);
                cmd.Parameters.Add("@img", SqlDbType.Image, picbyte.Length).Value = picbyte;

                
                cmd.ExecuteNonQuery();
                conn.Close();
            }
      

  2.   

    用System.DBNullht.Add("file_data",System.DBNull);