Vb.net 同时从多台pc向表中插入记录
我想同时从多台pc插入sql server和vb.net中的同一个表中 错误: 同时插入数据时发生冲突 存储过程:Vb.net 同时从多台pc向表中插入记录,vb.net,Vb.net,我想同时从多台pc插入sql server和vb.net中的同一个表中 错误: 同时插入数据时发生冲突 存储过程: ALTER PROCEDURE [dbo].[insertooks] @MULTIINSERT_CODE NVARCHAR(50) = NULL , @MULTIINSERT_NAME NVARCHAR(50) = NULL , @MULTIINSE
ALTER PROCEDURE [dbo].[insertooks]
@MULTIINSERT_CODE NVARCHAR(50) = NULL ,
@MULTIINSERT_NAME NVARCHAR(50) = NULL ,
@MULTIINSERT_DATE DATETIME = NULL
AS
BEGIN
SET NOCOUNT ON
INSERT INTO MULTIINSERT_TB
(
MULTIINSERT_CODE,
MULTIINSERT_NAME,
MULTIINSERT_DATE
)
VALUES
(
@MULTIINSERT_CODE ,
@MULTIINSERT_NAME ,
@MULTIINSERT_DATE
)
END
您的连接对象需要在使用它的方法中使用
声明,以便可以关闭和释放它
使用Using…End-Using
块确保关闭并释放数据库对象。使用
注意末尾的逗号;这包括使用
的中的命令
将连接字符串直接传递给连接的构造函数。同样,将CommandText
和连接直接传递给命令的构造函数
这应该是.Add
方法,该方法将SqlDbType
作为第二个参数。.AddWithValue
方法(不应与Sql Server一起使用)将该值作为第二个参数
连接打开时,切勿显示消息框。用户可能已经去吃午饭了,而你的开放连接就在那里。实际上,它最终会超时,但你明白了
我希望MULTIINSERT_TB的主键是一个标识字段(自动编号),并且您没有为它传递值
Private ConStr As String = "Your connection string"
Private Sub OpCode()
Try
Using con As New SqlConnection(ConStr),
com As New SqlCommand("insertooks", con)
com.CommandType = CommandType.StoredProcedure
com.Parameters.Add("@MULTIINSERT_CODE", SqlDbType.NVarChar).Value = TextBox1.Text
com.Parameters.Add("@MULTIINSERT_NAME", SqlDbType.NVarChar).Value = TextBox2.Text
com.Parameters.Add("@MULTIINSERT_DATE ", SqlDbType.Date).Value = DateTimePicker1.Value
con.Open()
com.ExecuteNonQuery()
End Using 'closes and disposes con and com
MsgBox("Record inserted successfully")
Catch ex As Exception
'Throw ex
MsgBox(ex.Message)
End Try
End Sub
发布您收到的实际错误消息。因此,我在这里的直觉是,这里还发生了一些事情,这样一个简单的sql插入引起了足够的关注,足以证明这个问题。事实是,冲突是多用户DBs生活中的一个事实,永远无法真正消除。归根结底是在事情发生时处理它。无论如何,我希望这句话能在几秒钟内完成,所以两个用户互相告密的可能性非常小
Private ConStr As String = "Your connection string"
Private Sub OpCode()
Try
Using con As New SqlConnection(ConStr),
com As New SqlCommand("insertooks", con)
com.CommandType = CommandType.StoredProcedure
com.Parameters.Add("@MULTIINSERT_CODE", SqlDbType.NVarChar).Value = TextBox1.Text
com.Parameters.Add("@MULTIINSERT_NAME", SqlDbType.NVarChar).Value = TextBox2.Text
com.Parameters.Add("@MULTIINSERT_DATE ", SqlDbType.Date).Value = DateTimePicker1.Value
con.Open()
com.ExecuteNonQuery()
End Using 'closes and disposes con and com
MsgBox("Record inserted successfully")
Catch ex As Exception
'Throw ex
MsgBox(ex.Message)
End Try
End Sub