我正在尝试将图像保存到数据库,但是代码抛出错误:
将nvarchar值'/Image/malzemeresim/kırmızı-biber.png'转换为数据类型int时转换失败。
我在不同的控制器之前尝试过相同的代码,但不会引起错误。
我的控制器:
public ActionResult MalzemeEkle(Malzemeler m, HttpPostedFileBase file)
{
string mainconn = ConfigurationManager.ConnectionStrings["Tarif"].ConnectionString;
SqlConnection sqlconn = new SqlConnection(mainconn);
string sqlquery = "insert into [Malzeme].[dbo].[Malzemeler] (Malzeme,Mal_Resim,Cat_Id) values (@Malzeme,@Cat_Id,@Resim)";
SqlCommand sqlcomm = new SqlCommand(sqlquery, sqlconn);
sqlconn.Open();
sqlcomm.Parameters.AddWithValue("@Malzeme", m.Malzeme);
sqlcomm.Parameters.AddWithValue("@Cat_Id", m.Cat_Id);
if (file != null && file.ContentLength > 0)
{
string filename = Path.GetFileName(file.FileName);
string imgpath = Path.Combine(Server.MapPath("/Image/malzemeresim/"), filename);
file.SaveAs(imgpath);
}
sqlcomm.Parameters.AddWithValue("@Resim","/Image/malzemeresim/" +file.FileName);
sqlcomm.ExecuteNonQuery();
sqlconn.Close();
return View();
}
答案 0 :(得分:1)
您的insert
查询中的参数顺序错误。更改
insert into [Malzeme].[dbo].[Malzemeler]
(Malzeme,Mal_Resim,Cat_Id) values (@Malzeme,@Cat_Id,@Resim)
到
insert into [Malzeme].[dbo].[Malzemeler]
(Malzeme,Cat_Id,Mal_Resim) values (@Malzeme,@Cat_Id,@Resim)
答案 1 :(得分:1)
使用(x != 0)
时参数的顺序很重要。值的顺序必须与列的顺序匹配。
您应该将SQL更新为:
INSERT INTO [Table] (col1, col2, col3) values (val1, val2, val3)