【发布时间】:2021-04-26 20:00:10
【问题描述】:
我有一个 SQL Server 数据库连接到组织运输的应用程序。就像日历时间表一样。有没有办法在一个用户进行更改时在应用程序中获取触发器(在我的情况下为更新),以便连接到数据库的所有其他应用程序更新到更新触发器调用?只是为了让所有应用程序更新到大多数原因数据。我正在使用 SQL 连接字符串。
Public Shared Sub Load(ByRef MyCollect As List(Of PAPaintSchedule), Filter As String, OrderBy As String)
MyCollect = New List(Of PAPaintSchedule)
Dim CMDValue As String = $"SELECT * FROM {TableName}"
If Filter IsNot Nothing Then CMDValue &= $" WHERE {Filter}"
If OrderBy IsNot Nothing Then CMDValue &= $" ORDER BY {OrderBy}"
CMDValue &= ";"
If SQLCon.State = System.Data.ConnectionState.Closed Then SQLCon.Open()
Dim CMD As New SqlCommand(CMDValue, SQLCon)
Dim reader As SqlDataReader = CMD.ExecuteReader()
Try
If reader.HasRows Then
While reader.Read()
Dim LF As New PAPaintSchedule With {.Id = reader(0),
.PaintDate = reader(1),
.Total = reader(2),
.Notes = reader(5)}
LF.HasChanges = False
MyCollect.Add(LF)
End While
End If
Catch ex As Exception
If Not SQLCon.State = System.Data.ConnectionState.Closed Then SQLCon.Close()
Finally
reader.Close()
CMD.Dispose()
If Not SQLCon.State = System.Data.ConnectionState.Closed Then SQLCon.Close()
End Try
If Not SQLCon.State = System.Data.ConnectionState.Closed Then SQLCon.Close()
End Sub
【问题讨论】:
-
有很多方法,但它是一个很大的话题,对于一个问题来说太大了。您需要研究选项,选择一个,试一试,然后在遇到困难时提出问题。
-
你当前的代码有很多问题:对SQL注入很危险,你也不应该缓存连接对象,你应该用
Using块来处理连接和阅读器 -
有许多策略,很大程度上取决于您希望如何管理它。您需要提出的问题,例如,如果用户在触发更新时正在编辑记录,会发生什么?这次更新的目的是什么?是否可以通过客户端定期轮询来管理?
-
每个应用都有自己的数据库吗?您是在寻求一种在数据库之间复制部分或全部数据的方法,还是在寻求一种让应用程序相互发送通知的方法,或者这是一个单一的数据库,但您只是希望客户端应用程序刷新?跨度>
-
同意,我的SQL注入是开放的,我需要重写加载函数。我写这个是为了提出这个问题。
标签: sql sql-server vb.net visual-studio-2019 connection-string