尝试将图像保存到数据库时转换失败

时间:2019-02-22 17:57:09

标签: c# sql-server asp.net-mvc

我正在尝试将图像保存到数据库,但是代码抛出错误:

  

将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();
    }

2 个答案:

答案 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)