簡體   English   中英

為什么我的SQL'INSERT'語句執行兩次?

[英]Why does my SQL 'INSERT' statement execute twice?

我有以下插入命令,我需要獲取范圍標識,以便稍后在應用程序中進行一些訂單跟蹤

SqlCommand cmd1 = new SqlCommand("INSERT INTO [pharm_OrderID](UserID, RequestType, CreateDate) values (@UserID, @RequestType, @CreateDate); Select SCOPE_IDENTITY();", conn1);
                    cmd1.CommandType = CommandType.Text;
                    conn1.Open();

                    string strUserID = txtEmpID.Text;
                    cmd1.Parameters.Add("@UserID", SqlDbType.NVarChar, 50);
                    cmd1.Parameters["@UserID"].Value = strUserID;

                    string strRequestType = ddlReturnType.SelectedValue;
                    cmd1.Parameters.Add("@RequestType", SqlDbType.NVarChar, 50);
                    cmd1.Parameters["@RequestType"].Value = strRequestType;

                    string strCreateDate = lblOrderAttemptTime.Text;
                    cmd1.Parameters.Add("@CreateDate", SqlDbType.NVarChar, 50);
                    cmd1.Parameters["@CreateDate"].Value = strCreateDate;

                    cmd1.ExecuteNonQuery();

                    string numScope = Convert.ToString(cmd1.ExecuteScalar());
                    lblOrderNum.Text = numScope;
                    cmd1.Dispose();
                    conn1.Close();
                    conn1.Dispose();

但為什么它插入兩次?

你正在執行它兩次

  1. cmd1.ExecuteNonQuery();
  2. Convert.ToString(cmd1.ExecuteScalar());

您只需要ExecuteScalar即可插入並選擇:

decimal newID = (decimal) cmd1.ExecuteScalar();

因為你已經執行了兩次; 一次作為ExecuteNonQuery(),一次作為ExecuteScalar()。

因為你執行了兩次:

   cmd1.ExecuteNonQuery(); //once

   string numScope = Convert.ToString(cmd1.ExecuteScalar()); //twice

擺脫cmd1.ExecuteNonQuery(); 並只使用ExecuteScalar()

查詢執行兩次的原因是因為您同時調用了ExecuteNonQuery
和命令對象上的ExecuteScalar。

那是因為你要執行兩次。

首先在這里:

cmd1.ExecuteNonQuery();

然后在這里:

string numScope = Convert.ToString(cmd1.ExecuteScalar());

刪除第一個。

你正在執行它兩次。

cmd1.ExecuteNonQuery(); // 1st

string numScope = Convert.ToString(cmd1.ExecuteScalar()); // 2nd

刪除其中一個。

暫無
暫無

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

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