gpt4 book ai didi

mysql - 如果从另一台计算机单击按钮,如何禁用该按钮

转载 作者:行者123 更新时间:2023-11-29 07:32:43 25 4
gpt4 key购买 nike

我有两台计算机运行相同的 VB.net 应用程序。我想要做的是,如果已单击另一台计算机上的同一按钮,则禁用该按钮。例如,如果我想添加一个新产品,ID_Code 将来自数据库表中的行数。因此,当我尝试添加新产品并从两台计算机同时按下确认时,它会添加具有相同 ID_Code 的两个产品。我不知道这是怎么发生的,因为我将 ID_Code 放入主键中。有没有办法禁用按钮,使其不能同时单击?这是我的代码。

首先获取表中的行数(MySql数据库使用switch作为连接)

Private Sub getIDRow()
Dim getYear As String = Now.Year
countRow = 0
mySqlConn = New MySqlConnection()
mySqlConn.ConnectionString = "Server=" & servername & "; user id=edward; password=edward123; database=inventory;"
Try
mySqlConn.Open()
myQuery = "Select * from inventory." & tblName
myCommand = New MySqlCommand(myQuery, mySqlConn)
myDataReader = myCommand.ExecuteReader
While myDataReader.Read
countRow = countRow + 1
End While
mySqlConn.Close()

If countRow = 0 Then
countRow = 1
lblIdCode.Text = getYear & Now.ToString("") & countRow.ToString("0000")
Else
countRow = countRow + 1
lblIdCode.Text = invCode & getYear & countRow.ToString("0000")
End If
Catch myerror As MySqlException
MessageBox.Show("Cannot connect to database: " & myerror.Message)
Finally
mySqlConn.Dispose()
End Try
End Sub

这是我单击确认按钮时的代码。

  mySqlConn = New MySqlConnection()
mySqlConn.ConnectionString = "Server=" & servername & "; user id=edward; password=edward123; database=inventory;"
Try
mySqlConn.Open()
myQuery = "INSERT INTO " & tblName & "(IdCode, Particular, Unit, Qty, Price, UnitVal, Type,CritQty)" & _
" VALUES(@IdCode, @Particular, @Unit, @Quantity, @Price, @UnitVal, @Type,@CritQty)"
Using myCommand As New MySqlCommand(myQuery, mySqlConn)
myCommand.Parameters.AddWithValue("@IdCode", lblIdCode.Text)
myCommand.Parameters.AddWithValue("@Particular", txtAdParticular.Text)
myCommand.Parameters.AddWithValue("@UnitVal", txtAdUnit.Text)
myCommand.Parameters.AddWithValue("@Unit", cmbAdUnit.Text)
myCommand.Parameters.AddWithValue("@Quantity", txtAdPrice.Text)
myCommand.Parameters.AddWithValue("@Price", txtAdQuantity.Text)
myCommand.Parameters.AddWithValue("@Type", tblName)
myCommand.Parameters.AddWithValue("@CriQty", txtAdCritQty.Text)
myCommand.ExecuteNonQuery()
End Using
MsgBox("Add item successful!", vbInformation)
mySqlConn.Close()
Catch ex As Exception
MessageBox.Show("Cannot connect to database: " & ex.Message)
Finally
mySqlConn.Dispose()
End Try

或者您能否建议一种让它变得更好的方法。

最佳答案

您应该将 IdCode 列修改为 AUTONUMBER 列。这样,插入该列的值就由数据库引擎计算出来。
您无需担心有多少台计算机尝试同时在表中插入一条记录。引擎将计算该值并将其放入列的记录中,从而准确地将传入请求排入队列。

这意味着您不需要任何代码来计算自己的值,并且在插入查询中,您不需要为带有 AUTONUMBER 标志的列传递任何值。

如果您需要知道引擎插入的数字,您可以使用用于发出 INSERT 命令的相同 MySqlConnection 来调用命令 SELECT LAST_INSERT_ID()

说我还建议更改将参数添加到 MySqlCommand 的代码,并使用更精确的 Parameters.Add(name, dbtype).Value 方法。如果您不知道 AddWithValue 方法如何执行值的自动转换,那么它是非常危险的。阅读 Can we stop to use AddWithValue already?

关于mysql - 如果从另一台计算机单击按钮,如何禁用该按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32026021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com