我有以下插入命令,我需要获取范围标识以便稍后在应用程序中进行一些订单跟踪
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();
但是为什么要插入两次呢?
最佳答案
你正在执行它两次
cmd1.ExecuteNonQuery();
Convert.ToString(cmd1.ExecuteScalar());
你只需要 ExecuteScalar
来插入和选择:
decimal newID = (decimal) cmd1.ExecuteScalar();
关于c# - 为什么我的 SQL 'INSERT' 语句执行了两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20199172/