通过C#更新SQL Server数据库#
我在通过C#更新SQL Server时遇到了问题。通过C#更新SQL Server数据库#
情况是,用户可能想要更新系统中的产品,并且如果未选择图像,则保存图像路径的字段全部为NULL。
我把一个检查,看看fileupload控件是否有一个文件来上传它,但如果控件没有文件,那么它应该运行更新查询来更新剩余的字段,而不是更新绑定到的字段文件上传控件。
下面是该页面的代码。
protected void FormView1_ItemUpdating(object sender, FormViewUpdateEventArgs e)
{
FileUpload FileUpload1 = (FileUpload)FormView1.FindControl("FileUpload3");
FileUpload FileUpload2 = (FileUpload)FormView1.FindControl("FileUpload4");
if (FileUpload1.HasFile)
{
string virtualFolder1 = "~/ProductArt/Thumb/";
string physicalFolder1 = Server.MapPath(virtualFolder1);
string oldkey = e.Keys["ItemID"].ToString();
//string photopath1 = e.OldValues["ThumbPath"].ToString();
string ext1 = System.IO.Path.GetExtension(FileUpload1.FileName);
FileUpload1.SaveAs(System.IO.Path.Combine(physicalFolder1, oldkey + ext1));
//e.Values["ThumbPath"] = photopath1 + ext1;
e.NewValues["ThumbPath"] = virtualFolder1 + oldkey + ext1;
}
else
{
//throw new Exception("Error, no thumb file selected");
SqlConnection connect = new SqlConnection("TTEConnectionString");
connect.Open();
SqlCommand cmdQuery = new SqlCommand(@"UPDATE Item SET ItemName='" + txtItemNameTextBox.Text + "', PublisherID='" + ddlPublisher.SelectedValue);
}
if (FileUpload2.HasFile)
{
string virtualFolder2 = "~/ProductArt/";
string physicalFolder2 = Server.MapPath(virtualFolder2);
string oldkey2 = e.Keys["ItemID"].ToString();
//string photopath1 = e.OldValues["ThumbPath"].ToString();
string ext2 = System.IO.Path.GetExtension(FileUpload2.FileName);
FileUpload2.SaveAs(System.IO.Path.Combine(physicalFolder2, oldkey2 + ext2));
//e.Values["ThumbPath"] = photopath1 + ext1;
e.NewValues["PhotoPath"] = virtualFolder2 + oldkey2 + ext2;
}
else
{
throw new Exception("Error, no full box file selected");
}
}
而且,只要我在ASP文本框的ID键入它会给
名称xxxx在目前情况下
不存在错误。
您在更新查询中缺少Where子句。
您需要为您没有价值的字段传递空值。即Fileupload在db中提交。
您可以像下面这些查询将更新现有值的记录,如果它为空(从前端传递)
Update yourtable
set fileuploadfiled=isnull(@fileuploadfield,fileuploadfield),
--Remaining fileds to be updated
where [email protected]
我希望它能帮助!
我知道,但是当我尝试将列链接到ASPX页面中的值时,它给出了'该名称在当前上下文中不存在'。 – 2013-05-09 06:37:25
确保您的文本框与您的代码具有相同的名称,并且runat =“server” – 2013-05-09 06:41:50
它们是,并且错误仍然出现。 – 2013-05-09 06:51:51
没有'WHERE'子句的'UPDATE'嗯 – Habib 2013-05-09 05:20:02
嗯,我试图建立查询,虽然我不断收到'该名称在当前上下文中不存在'的错误。 我一定错过了一些东西。 – 2013-05-09 05:25:35
[SQL注入警报](http://msdn.microsoft.com/en-us/library/ms161953%28v=sql.105%29.aspx) - 您应该**不**将您的SQL语句连接在一起 - 使用**参数化查询**而不是为了避免SQL注入 – 2013-05-09 08:22:09