2013-05-09 2 views
0

У меня возникли проблемы с тем, что я должен реализовать для обновления, и SQL Server через C#.Обновление базы данных SQL Server с помощью C#

Ситуация в том, что пользователь может захотеть обновить продукт в системе, и если изображение не выбрано, поля, в которых хранятся пути изображения, имеют значение NULL.

Я поставил чек, чтобы проверить, имеет ли файл управления загрузкой файл для его загрузки, но если у элемента управления нет файла, он должен запустить запрос обновления для обновления оставшихся полей, а не поля, привязанного к элемент управления файловой системой.

Ниже приведен код для страницы.

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 это дало бы

и название хххх не существует в текущем контексте

ошибки.

+1

'UPDATE' без предложения WHERE' hmmm – Habib

+0

Ну, я пытался создать запрос, хотя я продолжаю получать ошибку« имя не существует в текущем контексте ». Мне что-то не хватает. –

+0

[SQL Injection alert] (http://msdn.microsoft.com/en-us/library/ms161953%28v=sql.105%29.aspx) - вы должны ** не ** объединить свои SQL-запросы - использовать ** параметризованные запросы ** вместо того, чтобы избежать SQL-инъекции –

ответ

0

Вам не хватает предложения Where в вашем запросе на обновление.

Вам необходимо передать значение null для поля, для которого у вас нет значения. i.e Fileupload, зарегистрированный в db.

Вы можете иметь запрос, как показано ниже, который будет обновлять запись с существующим значением, если оно равно нулю (как передается от интерфейса)

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

Я надеюсь, что это помогает!

+0

Я знаю это, но когда я пытаюсь связать столбцы со значениями на странице ASPX, он дает «имя не существует в текущем контексте». –

+0

Убедитесь, что ваше текстовое поле имеет то же имя, что и в вашем коде, и имеет runat = "server" –

+0

, и они все еще появляются. –

Смежные вопросы