2013-05-09 183 views
0

我在通過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在目前情況下

不存在錯誤。

+1

沒有'WHERE'子句的'UPDATE'嗯 – Habib 2013-05-09 05:20:02

+0

嗯,我試圖建立查詢,雖然我不斷收到'該名稱在當前上下文中不存在'的錯誤。 我一定錯過了一些東西。 – 2013-05-09 05:25:35

+0

[SQL注入警報](http://msdn.microsoft.com/en-us/library/ms161953%28v=sql.105%29.aspx) - 您應該**不**將您的SQL語句連接在一起 - 使用**參數化查詢**而不是爲了避免SQL注入 – 2013-05-09 08:22:09

回答

0

您在更新查詢中缺少Where子句。

您需要爲您沒有價值的字段傳遞空值。即Fileupload在db中提交。

您可以像下面這些查詢將更新現有值的記錄,如果它爲空(從前端傳遞)

Update yourtable 
set fileuploadfiled=isnull(@fileuploadfield,fileuploadfield), 
--Remaining fileds to be updated 
where [email protected] 

我希望它能幫助!

+0

我知道,但是當我嘗試將列鏈接到ASPX頁面中的值時,它給出了'該名稱在當前上下文中不存在'。 – 2013-05-09 06:37:25

+0

確保您的文本框與您的代碼具有相同的名稱,並且runat =「server」 – 2013-05-09 06:41:50

+0

它們是,並且錯誤仍然出現。 – 2013-05-09 06:51:51