繁体   English   中英

获取错误:操作数类型冲突:nvarchar与图像不兼容

[英]Getting error:Operand type clash: nvarchar is incompatible with image

我在tblEmployee中有图像字段用于员工的图片。

当我试图在上载器中没有图像文件的情况下保存员工的详细信息时,它会抛出错误

“操作数类型冲突:nvarchar与图像不兼容”

当我从对话框中选择任何图片时,它工作正常。 我正在使用c#windows应用程序。

我的代码如下:

byte[] bimage=null;
           if(txtPic.Text!="")
            {
               string  image=txtPic.Text;
                Bitmap bmp=new Bitmap(image);
                FileStream fs=new FileStream(image,FileMode.Open,FileAccess.Read);
                bimage=new byte[fs.Length];
                fs.Read(bimage,0,Convert.ToInt32(fs.Length));
                fs.Close();
            }
                cmd = new SqlCommand("sp_insert_new_employee",conn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@name",txtName.Text.Trim());
                cmd.Parameters.AddWithValue("@fname",txtFName.Text.Trim());
                cmd.Parameters.AddWithValue("@dob",Convert.ToDateTime(dtDOB.Text));
                cmd.Parameters.AddWithValue("@nic",txtCNIC.Text.Trim());
                cmd.Parameters.AddWithValue("@add",txtAdd.Text.Trim());
                cmd.Parameters.AddWithValue("@emptype",cmbEmpType.SelectedItem.ToString());
                if(bimage!=null)
                  cmd.Parameters.AddWithValue("@imgdata", SqlDbType.Image).Value = bimage;
                else
                    cmd.Parameters.AddWithValue("@imgdata", SqlDbType.Image).Value = DBNull.Value;
                cmd.Parameters.AddWithValue("@descr",txtDescr.Text.Trim());
                conn.Open();
                cmd.ExecuteNonQuery();
                conn.Close();
                MessageBox.Show("Successfully added....!");`

任何人都知道我在哪里弄错了?

通常我们在传递DBNull.Value作为值时会出现此错误。 你能试试以下吗?

代替

cmd.Parameters.AddWithValue("@imgdata", SqlDbType.Image).Value = DBNull.Value;

使用以下内容。

SqlParameter imageParameter = new SqlParameter("@imgdata", SqlDbType.Image);
imageParameter .Value = DBNull.Value;
cmd.Parameters.Add(imageParameter );

此错误,数据库(sql)中的数据类型错误。 所以你将image数据类型更改为nvarchar数据类型。

ALTER TABLE Tbl_ProductFlip ALTER COLUMN FilePath nvarchar(100)

Filepath是ColumnName nvarchar(100)是新的数据类型

我通过使用这样的参数解决了这个问题:

    Byte[] imgtype = { 0 };
 if(bimage!=null)
                  cmd.Parameters.AddWithValue("@imgdata", SqlDbType.Image).Value = bimage;
                else
                    cmd.Parameters.AddWithValue("@imgdata", SqlDbType.Image).Value = imgtype ;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM