簡體   English   中英

同時從多台pc向表中插入記錄

[英]Insert records into a table from more than pc at same time

我想同時從多台電腦插入 sql 服務器和 vb.net 的同一張表中。

錯誤:

同時插入數據時發生沖突

Try
    Dim com As New SqlCommand()
    com.CommandType = CommandType.StoredProcedure
    com.CommandText = "insertooks"

    com.Parameters.AddWithValue("@MULTIINSERT_CODE", SqlDbType.NVarChar).Value = TextBox1.Text
    com.Parameters.AddWithValue("@MULTIINSERT_NAME", SqlDbType.NVarChar).Value = TextBox2.Text
    com.Parameters.AddWithValue("@MULTIINSERT_DATE ", SqlDbType.Date).Value = DateTimePicker1.Value
    com.Connection = con
    con.Open()
    com.ExecuteNonQuery()
    con.Close()

    MsgBox("Record inserted successfully")
Catch ex As Exception
    'Throw ex
    MsgBox(ex.Message)
Finally
    con.Close()
    con.Dispose()
End Try

存儲過程:

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 

您的連接 object 需要在使用它的方法中Using聲明,以便可以關閉和處理它。

使用Using...End Using塊來確保您的數據庫對象已關閉和處置。 注意Using末尾的逗號; 這包括Using中的命令。

將連接字符串直接傳遞給連接的構造函數。 同樣,將CommandText和連接直接傳遞給命令的構造函數。

這應該是.Add方法,它將SqlDbType作為第二個參數。 .AddWithValue方法(不應與 Sql 服務器一起使用)將該值作為第二個參數。

連接打開時切勿顯示消息框。 用戶可能已經去吃午飯了,而你的開放連接就在那里。 實際上,它最終會超時,但你明白了。

我希望 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM