我正在尝试连接到数据库并保持连接打开,以便在数据库中进行任何数量的用户活动/查询。目前我有一个连接可以打开和关闭任何查询(保存,更新等等),这需要每次用户保存等时登录进程到后端...有没有办法简单地连接和离开连接是否打开,因此在登录过程中运行查询时不会有延迟时间?这就是我正在使用的:
Private sConStrFormat As String = "Provider=TDOLEDB;Data Source=TDDEV;Persist Security Info=True;User ID={0};Password={1};Default Database=bcpm_ddbo;Session Mode=ANSI;"
Private Sub cmdsave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdsave.Click
Dim sSQL As String
Dim sConStr As String
Dim user As String
Dim pass As String
user = txtuser.Text
pass = txtpass.Text
Dim UserName As String = user
Dim Password As String = pass
sConStr = String.Format(sConStrFormat, UserName, Password)
Using Con As System.Data.OleDb.OleDbConnection = New System.Data.OleDb.OleDbConnection(sConStr)
Con.Open()
sSQL = "INSERT INTO LTC_FBS (CLM_NUM) VALUES ('" & Me.txtClaim.Text & "')"
Dim cmdins As New System.Data.OleDb.OleDbCommand(sSQL, Con)
cmdins.ExecuteNonQuery()
Con.Close()
End Using
End Sub
答案 0 :(得分:2)
.Net会自动为您保留connection pool。 According to MSDN,当您在Close()
框架
Connection
时
释放与该连接的连接 连接池,或关闭 如果连接池是连接 禁用
答案 1 :(得分:1)
在vb.net 4.5中执行以下操作:
在课程定义者输入此行之后的最高位:
Public Shared conn As OdbcConnection
然后,在要使用连接的子中使用以下行:
If conn Is Nothing Then conn = New OdbcConnection(<your_connection_string>): conn.Open()
然后New OdbcCommand将使用现有连接而不打开新连接。在您确定完成之前不要关闭脚本中的连接(_Shutdown是一个好地方,你很高兴。
当不断打开新连接导致最大连接错误时,这也解决了MySQL的问题。
答案 2 :(得分:0)
不是在using语句中定义'con',而是在上面将其定义为静态变量。调用该函数时,您可以查看是否已确定“Con”。如果没有,则构建连接字符串并设置Con = New OleDBConnection,然后将其打开。由于它是一个静态变量,它将在下次调用时保留其值。检查它不是什么,然后立即使用它。确保您没有在例行程序中调用close,否则连接将不会保持打开状态。