База данных не обновляется после оператора SQL UPDATE в ASP.net - PullRequest
1 голос
/ 18 марта 2010

В настоящее время у меня возникла проблема с обновлением записи в моей базе данных. У меня есть веб-страница, которая отображает в текстовых полях данные пользователей, эти данные взяты из сеанса при входе в систему. Цель состоит в том, чтобы обновить детали, когда пользователь перезаписывает текущий текст в текстовых полях.

У меня есть функция, которая запускается, когда пользователь нажимает кнопку «Сохранить данные», и она работает, так как я проверил количество затронутых строк и выдает 1. Однако при проверке базы данных запись не был обновлен, и я не уверен, почему.

Я проверил обрабатываемый оператор SQL, отобразив его в виде метки, и он выглядит так:

UPDATE [users] 
   SET [email] = @email, 
       [firstname] = @firstname, 
       [lastname] = @lastname, 
       [promo] = @promo 
 WHERE [users].[user_id] = 16

Функция и другой соответствующий код:

Sub Page_Load(sender As Object, e As EventArgs)

usernameLabel.text = session.contents.item("UserName")

if usernameLabel.text = "" then

    logoutButton.Visible = False
    loggedInAsLabel.Visible = False

else

    labelGuest.Visible = False
    linkLogin.Visible = False
    linkRegister.Visible = False

end if

emailBox.text = session.contents.item("Email")
firstBox.text = session.contents.item("FirstName")
lastBox.text = session.contents.item("LastName")
promoBox.text = session.contents.item("Promo")


End Sub

Sub Button1_Click(sender As Object, e As EventArgs)

    changeDetails(emailBox.text, firstBox.text, lastBox.text, promoBox.text)

End Sub

Function changeDetails(ByVal email As String, ByVal firstname As String, ByVal lastname As String, ByVal promo As String) As Integer
    Dim connectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; Data Source=C:\Documents an"& _
        "d Settings\Paul Jarratt\My Documents\ticketoffice\datab\ticketoffice.mdb"
    Dim dbConnection As System.Data.IDbConnection = New System.Data.OleDb.OleDbConnection(connectionString)

    Dim queryString As String = "UPDATE [users] SET [email]=@email, [firstname]=@firstname, [lastname]=@lastname, "& _
        "[promo]=@promo WHERE ([users].[user_id] = " + session.contents.item("ID") + ")"
    Dim dbCommand As System.Data.IDbCommand = New System.Data.OleDb.OleDbCommand
    dbCommand.CommandText = queryString
    dbCommand.Connection = dbConnection

    Dim dbParam_email As System.Data.IDataParameter = New System.Data.OleDb.OleDbParameter
    dbParam_email.ParameterName = "@email"
    dbParam_email.Value = email
    dbParam_email.DbType = System.Data.DbType.[String]
    dbCommand.Parameters.Add(dbParam_email)

    Dim dbParam_firstname As System.Data.IDataParameter = New System.Data.OleDb.OleDbParameter
    dbParam_firstname.ParameterName = "@firstname"
    dbParam_firstname.Value = firstname
    dbParam_firstname.DbType = System.Data.DbType.[String]
    dbCommand.Parameters.Add(dbParam_firstname)

    Dim dbParam_lastname As System.Data.IDataParameter = New System.Data.OleDb.OleDbParameter
    dbParam_lastname.ParameterName = "@lastname"
    dbParam_lastname.Value = lastname
    dbParam_lastname.DbType = System.Data.DbType.[String]
    dbCommand.Parameters.Add(dbParam_lastname)

    Dim dbParam_promo As System.Data.IDataParameter = New System.Data.OleDb.OleDbParameter
    dbParam_promo.ParameterName = "@promo"
    dbParam_promo.Value = promo
    dbParam_promo.DbType = System.Data.DbType.[String]
    dbCommand.Parameters.Add(dbParam_promo)

    Dim rowsAffected As Integer = 0
    dbConnection.Open
    Try
        rowsAffected = dbCommand.ExecuteNonQuery
    Finally
        dbConnection.Close
    End Try

    labelTest.text = rowsAffected.ToString()

    if rowsAffected = 1 then

    labelSuccess.text = "* Your details have been updated and saved"

    else

    labelError.text = "* Your details could not be updated"

    end if

End Function

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 18 марта 2010

Вы уверены, что обновляете базу данных? Мне вообще не нравится внешний вид этой строки подключения (и, честно говоря, я сомневаюсь, что Пол Джарратт был бы слишком счастлив увидеть ее здесь).

0 голосов
/ 18 марта 2010

Есть ли на вашей странице свойство requireTransaction? Если это так, убедитесь, что во время запроса нет других исключений, которые могли бы вызвать откат транзакции, оставив данные без изменений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...