c# - 为什么我的 SQL 'INSERT' 语句执行了两次?

标签 c# asp.net sql sql-server

我有以下插入命令,我需要获取范围标识以便稍后在应用程序中进行一些订单跟踪

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();

关于c# - 为什么我的 SQL 'INSERT' 语句执行了两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20199172/

相关文章:

c# - 我在 JIT/CLR 中发现了一个错误 - 现在我该如何调试或重现它?

c# - 订阅子类(class)的事件?

asp.net - User.Identity.Name 返回 NT AUTHORITY\NETWORK SERVICE 我想要 Domain\USER

c# - 自定义处理程序不喜欢 Firefox 上的空格

MySQL 加入同一张表

c# - 如果中间发生另一个事件,调度程序计时器如何在滴答事件中执行其工作?这段代码有什么问题?

c# - 使用属性名称作为字符串进行排序

mysql - 相当于 MySQL 中 SQL Server 的 `MAX`

sql - 一列中有许多外键

c# - 我怎样才能使我的表单控件变量可以被我的表单类以外的类访问?