C# 为什么select scope_identity()为SQL查询返回1?

C# 为什么select scope_identity()为SQL查询返回1?,c#,sql,asp.net,sqlcommand,C#,Sql,Asp.net,Sqlcommand,我正在使用SQL查询在sqlcommand中选择SCOPE\u IDENTITY()。这是我的密码: SqlCommand cmd = new SqlCommand("INSERT INTO tbl_Supplier(Supplier_Name,Supplier_Address, Supplier_PhoneNo,Supplier_City,Supplier_Remarks) VALUES('" + TextBox1.Text + "','" + TextBox2.Text + "','" +

我正在使用SQL查询在sqlcommand中选择SCOPE\u IDENTITY()。这是我的密码:

 SqlCommand cmd = new SqlCommand("INSERT INTO tbl_Supplier(Supplier_Name,Supplier_Address, Supplier_PhoneNo,Supplier_City,Supplier_Remarks) VALUES('" + TextBox1.Text + "','" + TextBox2.Text + "','" + TextBox3.Text + "','"+DropDownList1.SelectedItem+"','"+TextBox4.Text+"') RETURN SCOPE_IDENTITY()", conn);
            var id = cmd.ExecuteScalar();
            conn.Close();

但是代码总是返回1?

您使用了错误的语法来获取该信息

"...; SELECT SCOPE_IDENTITY()"
(请注意SELECT前面和第一条sql语句结尾之后的分号)

此时,ExecuteScalar能够获取SELECT返回的第一行的第一列

尽管如此,请花一点时间来学习如何执行您的代码,因为您的代码非常脆弱,而且很容易成为您的目标


您的代码中没有
select scope\u identity()
,它有
return scope\u identity()
<代码>选择和
返回
执行不同的操作。请修正您的问题,说明您使用的是哪一个。return和select都返回1…个值(“+TextBox1.Text+”、“+TextBox2.Text+”、“+TextBox3.Text+”、“+DropDownList1.SelectedItem+”、“+TextBox4.Text+”;选择范围“\u IDENTITY()”,康涅狄格州);我应该使用这种方式吗?对于SCOPE_IDENTITY部分,是的。对于第一个语句,您应该使用参数化查询。请解释。您是否收到任何错误消息?您是否尝试在不停止调试会话的情况下连续插入至少两条记录?还有什么问题?是的,我一次插入两条记录。但这几乎解决了问题问题是var id在当前块之外是不可访问的。我不能在pageload之前声明它。
string cmdText = @"INSERT INTO tbl_Supplier 
                  (Supplier_Name,
                   Supplier_Address, 
                   Supplier_PhoneNo,
                   Supplier_City,
                   Supplier_Remarks) 
                  VALUES(@name, @address, @phone, @city, @remarks);
                  SELECT SCOPE_IDENTITY()"

 using(SqlCommand cmd = new SqlCommand(cmdText, connection))
 {
     connection.Open();
     cmd.Parameters.Add("@name", SqlDbType.NVarWChar).Value = TextBox1.Text;
     cmd.Parameters.Add("@address", SqlDbType.NVarWChar).Value = TextBox2.Text;
     cmd.Parameters.Add("@phone", SqlDbType.NVarWChar).Value = TextBox3.Text;
     cmd.Parameters.Add("@city", SqlDbType.NVarWChar).Value = DropDownList1.SelectedItem
     cmd.Parameters.Add("@remarks", SqlDbType.NVarWChar).Value = TextBox4.Text;

      var id = cmd.ExecuteScalar();
 }
 conn.Close();