mysql - 为什么 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
解决方案
推荐阅读
- sql - 如何加快比较子字符串的查询执行速度
- javascript - NextJS:使用experimental.externalDir 时不能在外部库中使用绝对导入
- sequence-diagram - 用例序列图中的交互超时
- gradle - 跳过 gradle 中的所有任务,除了提供的任务
- c# - 无法在 Unity 中转换通用字符串
- java - Google Nearby Messages Api 重新发布消息问题
- python - 具有最小周期和最大值的 Numpy 滚动窗口(类似于 Pandas 滚动但 Numpy)
- android - 突出显示在 Android 设置应用程序的搜索结果中找到的菜单项
- c++ - 为什么 delete[] 在这里抛出异常?
- rust - 在 Rust 中,在实例化它时需要结构的成员/字段名称。为什么我们不能只传递值?