C# 必须声明标量变量“@imgPicture”
ASP.Net上的超级新手,很抱歉,如果这个问题被问了无数次,我已经在这里和google上阅读了很多类似问题的答案,但我找不到适用于我的代码的解决方案,我想将图像url保存到数据库中,这是不起作用的代码:C# 必须声明标量变量“@imgPicture”,c#,asp.net,sql,C#,Asp.net,Sql,ASP.Net上的超级新手,很抱歉,如果这个问题被问了无数次,我已经在这里和google上阅读了很多类似问题的答案,但我找不到适用于我的代码的解决方案,我想将图像url保存到数据库中,这是不起作用的代码: if (imgPicture.ImageUrl != null) { String strConn = "Data Source=TOSHI;Initial Catalog=prueba;Integrated Securi
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您为参数使用了错误的名称。它应该是@imgPicture,来自查询:
cmd.Parameters.AddWithValue("@imgPicture", imgPicture.ImageUrl);
更新
根据对该问题的评论,我认为整个if块的内容可以删除,您可以将以下内容放入主插页中:
cmd.Parameters.AddWithValue("@imgPicture", (imgPicture.ImageUrl == null ? (object)DBNull.Value : (object)imgPicture.ImageUrl));
您还需要将imagen添加到要插入查询的列列表的末尾,并将@imgPicture添加到参数。不幸的是,这与asp.net无关,与您的查询无关 您的查询是:
Insert into curriculum (imagen) values (@imgPicture)
它定义了参数@imgPicture
然后添加一个名为@imagen的参数,该参数将被忽略,但更重要的是,不要添加参数@imgPicture
你确定你不是指cmd.Parameters吗。AddWithValue@imgPicture,imgPicture.ImageUrl 您的查询如下:
string strQuery = "Insert into curriculum (imagen) values (@imgPicture)";
您将@imgPicture声明为变量
您需要在代码中使用该变量:
cmd.Parameters.Add("@imgPicture", SqlDbType.VarChar).Value = imgPicture.ImageUrl;
不,因为数据库上的字段名为imagen,所以asp代码上的图像字段名为imgPicture,这就是它们被命名的原因different@Ivelisse数据库列的名称无关紧要;这不是问题所在;问题是,您使用@imgPicture时没有任何声明,当我添加该行而不是我得到的行时,我无法将值NULL插入到“Nombre”列、表“prueba.dbo.courseum”中;列不允许空值。插入失败。声明已终止。使用我的行,我至少可以将列保存到数据库中,但ImagenURL列除外saved@Ivelisse这已经至少解释过一次了。执行插入时,需要为所有非null、非默认值、非隐式标识/timetamp/etc列提供值。您尚未提供Nombre的值;因此,我得到的是:不能将NULL值插入到“Nombre”列、表“prueba.dbo.currency”中;列不允许空值。插入失败。声明已终止。即使我在列Nombre上写了一些东西,但它是表中唯一不能为NULL的列。插入查询需要为所有NOTNULL列指定值。鉴于问题的上下文,无法告诉您完整答案,但至少:在课程图像中插入Nombre values@imgPicture、@Nombre,后跟cmd.Parameters。AddWithWalue@Nombre数字insert nombre正在工作,但在代码的另一部分中使用sqldatasource声明,如果我删除我在第一个问题上粘贴的代码,页面工作正常,将所有文本框保存到数据库中,但是,当我添加代码以将图像url保存到数据库中时是不工作的感谢帮助,但不是,更新不是我需要的,我正在做的是为用户创建一个配置文件,他们上传图片,并显示在图像字段中,用他们的信息填充所有文本框和下拉列表,当他们单击提交按钮时,信息存储到数据库中,当他们这样做时,我还希望imageurll进入数据库工具,比如我的更新?不能给你一个确切的,再一次,我需要更多的上下文。