必须声明标量变量“@imgPicture”

时间:2012-07-10 18:53:41

标签: c# asp.net sql

ASP.Net上的超级新手,对不起,如果这已被无数次询问,我已经在这里和谷歌上阅读了很多这个类似问题的答案,但我找不到适用于我的代码的解决方案,我想将图像url保存到数据库中,这是不起作用的代码:

if (imgPicture.ImageUrl != null)
                {
                    String strConn = "Data Source=TOSHI;Initial Catalog=prueba;Integrated Security=True";
                    SqlConnection conn = new SqlConnection(strConn);
                    SqlCommand cmd = new SqlCommand();
                    cmd.Connection = conn;
                    string strQuery = "Insert into curriculum (imagen) values      (@imgPicture)";
                    cmd.CommandText = strQuery;
                    cmd.CommandType = CommandType.Text;
                    cmd.Parameters.AddWithValue("@imagen", imgPicture.ImageUrl);
                    conn.Open();
                    cmd.ExecuteNonQuery();
                    conn.Close();
                }

在cmd.parameters上我也试过

cmd.Parameters.Add("imagen", SqlDbType.VarChar).Value = imgPicture.ImageUrl;

但都没有效果

编辑:数据库中字段的名称是imagen,ASP上的图像字段是imgPicture

3 个答案:

答案 0 :(得分:4)

您使用的参数名称错误。它应该是@imgPicture,来自查询:

cmd.Parameters.AddWithValue("@imgPicture", imgPicture.ImageUrl);

<强>更新

根据对此问题的评论,我认为可以删除整个if块的内容,您可以将以下内容放入主插页中:

cmd.Parameters.AddWithValue("@imgPicture", (imgPicture.ImageUrl == null ? (object)DBNull.Value : (object)imgPicture.ImageUrl));

您还需要将imagen添加到要在查询中插入的列列表的末尾,并将@imgPicture添加到参数中。

答案 1 :(得分:2)

不幸的是,这与asp.net无关,也与您的查询无关。

您的查询是:

Insert into curriculum (imagen) values      (@imgPicture)

定义参数@imgPicture

然后您要添加一个名为@imagen的参数(将被忽略),但更重要的是不添加参数@imgPicture

您确定不是cmd.Parameters.AddWithValue("@imgPicture", imgPicture.ImageUrl);吗?

答案 2 :(得分:2)

您的查询是:

string strQuery = "Insert into curriculum (imagen) values (@imgPicture)";

您要将@imgPicture声明为您的变量。

您需要在代码中使用该变量:

cmd.Parameters.Add("@imgPicture", SqlDbType.VarChar).Value = imgPicture.ImageUrl;