вставить код, для которого требуется предложение where

#asp.net

#asp.net

Вопрос:

мне нужно вставить некоторые данные в raw. предположим, сначала я вставляю имя пользователя, firstname lastname и т.д., А затем создаю сеанс «username» из поля username

теперь мне нужно вставить пол, образование, фото, где username= session»имя пользователя»

я использую maltiview и view

 Protected Sub btnSubmitD1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        'Dim temp As Integer = (DateTime.Now.Subtract(Convert.ToDateTime("txtDOB.Text")).Days) / 365

        Dim objcmd As New SqlCommand((((("insert into Registration(UserName,FName,LName,Gender,Religion,Language,Status) values('" amp; Session("UserName").ToString() amp; "','")   txtFName.Text amp; "','")   txtLName.Text amp; "','" amp; ddlGender.SelectedValue.ToString() amp; "','")   txtReligion.Text amp; "','")   txtMotherTongue.Text amp; "','" amp; ddlMaritalStatus.SelectedValue.ToString() amp; "')", con)
  

Комментарии:

1. Пожалуйста, используйте параметры в вашем sql-операторе вместо того, чтобы напрямую помещать ненадежное содержимое из ваших текстовых полей в sql-оператор.

2. Самич — Как вы пропустили слово «maltiview» при редактировании 🙂 Это слово звучит как женщина из фильма Fith Element, когда она говорит «многопроходный»

Ответ №1:

Надеюсь, я правильно вас понимаю. Вы хотите обновить значения этих полей, где имя пользователя — это то, что хранится в переменной сеанса. Вы можете использовать следующий код:

         Using conn As New SqlConnection("Data Source=(local);Initial Catalog=YouDatabase;Integrated Security=True")
            Using cmdUpdate As New SqlCommand("Update Registration Set Gender=@Gender, Education=@Education, PhotoUrl=@PhotoUrl Where Username=@UserName")
               conn.Open()
               cmdUpdate.Parameters.AddWithValue("@Gender", "male")
               cmdUpdate.Parameters.AddWithValue("@Education", "Degree")
               cmdUpdate.Parameters.AddWithValue("@PhotoUrl", "http://photo.com/photo.png")
               cmdUpdate.Parameters.AddWithValue("@UserName", Session("UserName").ToString())
               cmdUpdate.ExecuteNonQuery()
            End Using
        End Using
  

Комментарии:

1. спасибо за ответ, но будет ли работать команда updatecommand, когда поля gender, education и photourl пусты

Ответ №2:

Итак, вы создали простую форму, разбитую на виды.

В первом представлении вы хотите записать имя пользователя и фамилию пользователя, затем во втором просмотреть некоторые дополнительные сведения и так далее. Но вы хотите создать запись в базе данных для пользователя после завершения первого просмотра…

Есть два основных способа сделать это

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

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

Для (a) всякий раз, когда вы меняете представления, просто сохраняйте / обновляйте Session["fieldname"] = fieldvalue . Затем, когда форма будет завершена, вы можете использовать оператор типа

 INSERT INTO table (name,firstname,lastname,...) VALUES (@name,@firstname,@lastname,...)
  

Для (b) сначала вам нужно будет вставить исходное представление и получить новый идентификатор

 INSERT INTO table (name,firstname,lastname) VALUES (@name,@firstname,@lastname);
SELECT @@IDENTITY;
  

Затем для каждого из следующих представлений используйте значение, возвращаемое из @@IDENTITY, для обновления таблицы

 UPDATE table SET gender=@gender, dob=@dob,... WHERE id=@id