我在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....!");`
任何人都知道我在哪里弄错了?
答案 0 :(得分:3)
通常我们在传递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 );
答案 1 :(得分:1)
此错误,数据库(sql)中的数据类型错误。所以你将image数据类型更改为nvarchar数据类型。
ALTER TABLE Tbl_ProductFlip ALTER COLUMN FilePath nvarchar(100)
Filepath是ColumnName nvarchar(100)是新数据类型
答案 2 :(得分:0)
我通过使用像这样的参数解决了这个问题:
Byte[] imgtype = { 0 };
if(bimage!=null)
cmd.Parameters.AddWithValue("@imgdata", SqlDbType.Image).Value = bimage;
else
cmd.Parameters.AddWithValue("@imgdata", SqlDbType.Image).Value = imgtype ;