首页 > 解决方案 > 为什么 MySQL 会为同一个用户创建 4 个连接?

问题描述

我有用 VB.NET 编写的 Web API 2 应用程序。API连接到MySQL数据库。用户可以做很多操作,获取不同类型的数据,控制器内部有很多不同的 GET/POST 方法。

我想知道为什么当用户使用 REST 服务进行第一次操作时,MySQL 会为同一个用户创建 4 个连接?

所有获取或插入数据的方法都是用Using方法编写的,因此我确信所有连接都已正确处理。

每个用户都将登录并对其自己的数据库进行操作。但是,当我仅使用一个用户登录时,用户连接列表如下所示:

在此处输入图像描述

以下是其中一种GET方法的编写方式:

    <HttpGet()>
    <Route("confirm")>
    Public Function ConfirmPrenotazioni(ByVal id As String)
        Try
            'Here i'm fetching the DB name from jwt token to connect the user
            Dim token As String = Request.Headers.GetValues("jwt_token").First()
            Dim principals = TokenManager.Principals(TokenManager.GetPrincipal(token))
            If principals Is Nothing Then Return New HttpResponseMessage(HttpStatusCode.Unauthorized)
            Dim reservation As Reservation = New Reservation

            Return reservation.ConfirmPrenotazione(id, principals.piva)
        Catch ex As Exception
            Return New HttpResponseMessage(HttpStatusCode.Unauthorized)
        End Try

    End Function

以下是 ConfirmPrenotazione 的编写方式:

  Public Function ConfirmPrenotazione(ByVal id As String, ByVal piva As String) As String
        Dim SQLConnect As String = "Server=127.0.0.1;Port=3306;Database=" & piva & ";Uid=root;Pwd=tax;"
        Using cn As New MySqlConnection(SQLConnect)
            cn.Open()
            Using cmd As New MySqlCommand("UPDATE prenota_tavoli SET STATO_PTV = 'ARR', ORAARRIVO_PTV = @Oraarrivo WHERE ID_PTV = @Id AND STATO_PTV NOT LIKE('%ARR%')", cn)
                cmd.Parameters.AddWithValue("@Id", id)
                cmd.Parameters.AddWithValue("@Oraarrivo", Format(Date.Now.AddMinutes(15), "yyyy-MM-dd HH\:mm") & ":00")
                cmd.ExecuteNonQuery()

                Return "OK"
            End Using
        End Using

        Return "ERR"
    End Function

标签: mysqlvb.netado.netasp.net-web-api2mysql-connector

解决方案


推荐阅读