1

我们希望使用通过更改 ASP.Net 上的值获得的值来更新 SQL Server 2012 数据库中的数据DetailsView。我想使用更新数据库

  • 一个强类型的 DataSet,称为DataSetParentsDetails
  • 一个名为 TableAdapterParentsDetailsTableAdapter
  • 一个名为ParentsDetails.

这些是使用数据集设计器创建的。

这是代码隐藏文件中的代码,用于计算我们想要更新到数据库中的数量:

Protected Sub DetailsViewDetails_ItemCommand(sender As Object, e As System.Web.UI.WebControls.DetailsViewCommandEventArgs)
  Dim dcmAmountToAdjust As Decimal
  Dim StrSqlStatement As String

  Select Case e.CommandName
    Case "Add"
    Case "Edit"
      dcmOriginalRegistrationFee = GetValueFromLabelRegistrationFee()
    Case "Delete"
    Case "Update"
      dcmNewRegistrationFee = GetValueFromTextBoxRegistrationFee()
      dcmAmountToAdjust = dcmNewRegistrationFee - dcmOriginalRegistrationFee
      ' Update the tuition balance in the parent's data.
      '-------------------------------------------------
      StrSqlStatement =
        "Update Students " & _
        "Set RegistrationCode = RegistrationCode + @AmountToAdjust " & _
        "Where StudentID = @ID"
      ' Code to update the database goes here.
      '---------------------------------------
  End Select
End Sub

我确信这个问题之前被问过很多次,但我找不到一个很好的例子来说明如何使用查询:StrSqlStatement通过强类型数据集更新数据库。

4

1 回答 1

5

首先,您需要一个连接字符串,最好将连接字符串存储在web.config文件中:

<connectionStrings>
  <add name="MyConnectionString" connectionString="Data Source=putYourServerAndInstanceNameHere;Initial Catalog=putYourDatabaseNameHere;User ID=putYourSqlUsernameHere;Password=password" providerName="System.Data.SqlClient" />
</connectionStrings>

这是根元素的直接子<configuration>元素。有关连接字符串的更多信息,请访问http://www.connectionstrings.com

然后,您需要在代码隐藏中添加一些导入,如果您还没有将它们添加到项目中,则需要将它们添加为项目的引用:

Import System.Data
Import System.Data.SqlClient

然后我们连接到数据库并运行我们的命令,我们使用参数,因为它们更安全。

'build the connection object using the string from the web.config file
Using conn As New SqlConnection(ConfigurationManager.ConnectionStrings("MyConnectionString").ConnectionString)
  'build the command object specifying the command text and the connection to use, conn
  Using cmd As New SqlCommand("UPDATE Students SET RegistrationCode = RegistrationCode + @AmountToAdjust WHERE StudentID = @ID", conn)
    'add the parameters needed by the command
    cmd.Parameters.AddWithValue("@AmountToAdjust", amountToAdjust)
    cmd.Parameters.AddWithValue("@ID", studentID)
    'try to open the connection and execute the statement
    Try
      conn.Open()
      cmd.ExecuteNonQuery()
    Catch ex As Exception
      'handle the exception here
    End Try
  End Using
End Using

请注意,这里不需要使用conn.Close(),因为该Using语句会为您处理(SqlConnection 的 Dispose 方法会在连接仍处于打开状态时将其关闭)。

于 2012-11-14T19:46:11.980 回答