#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