C# Scope_标识有什么问题?

C# Scope_标识有什么问题?,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我尝试了数以百万计的方法使范围标识工作。它只是返回页面 Query = "INSERT INTO seekers(name,sname,lname,status,gender,dob,major,experince,email,password,phone,valid,city) values(@name,@sname,@lname,@status,@gender,@dob,@major,@exp,@email,@password,@phone,0,@city);SELECT SCOPE_IDE

我尝试了数以百万计的方法使范围标识工作。它只是返回页面

Query = "INSERT INTO seekers(name,sname,lname,status,gender,dob,major,experince,email,password,phone,valid,city) values(@name,@sname,@lname,@status,@gender,@dob,@major,@exp,@email,@password,@phone,0,@city);SELECT SCOPE_IDENTITY();";

// setting up command definition
Command = new SqlCommand(Query, Connection);

// setting up command parameters
Command.Parameters.AddWithValue("email", txt_email.Text);
Command.Parameters.AddWithValue("gender", lst_gender.SelectedValue);
Command.Parameters.AddWithValue("status", lst_status.SelectedValue);
Command.Parameters.AddWithValue("phone", long.Parse("968" + txt_phone.Text));
Command.Parameters.AddWithValue("password", txt_password.Text);
Command.Parameters.AddWithValue("exp", lst_exp.SelectedValue);
Command.Parameters.AddWithValue("city", lst_exp.SelectedValue);
Command.Parameters.AddWithValue("major", lst_major.SelectedValue);
Command.Parameters.AddWithValue("name", txt_name.Text);
Command.Parameters.AddWithValue("sname", txt_sname.Text);
Command.Parameters.AddWithValue("lname", txt_lname.Text);
Command.Parameters.AddWithValue("dob", cld_birth.SelectedDate);

int ID = (int)Command.ExecuteScalar();

请按以下方式尝试参数

Query = "INSERT INTO seekers(name,sname,lname,status,gender,dob,major,experince,email,password,phone,valid,city) values(@name,@sname,@lname,@status,@gender,@dob,@major,@exp,@email,@password,@phone,0,@city);SET @ID=SCOPE_IDENTITY();"

//Your Parameters..
SqlParameter ID=new SqlParameter();
ID.Name="@ID";
ID.Direction=ParameterDirection.Output;
Command.Parameters.Add(ID);
Command.ExecuteNonQuery();
int id=(int)ID.Value;
 Query = "INSERT INTO seekers(name,sname,lname,status,gender,dob,major,experince,email,password,phone,valid,city) values(@name,@sname,@lname,@status,@gender,@dob,@major,@exp,@email,@password,@phone,0,@city);SELECT CAST(scope_identity() AS int);"

 int id= (Int32)Command.ExecuteScalar();
或 尝试按如下方式转换输出

Query = "INSERT INTO seekers(name,sname,lname,status,gender,dob,major,experince,email,password,phone,valid,city) values(@name,@sname,@lname,@status,@gender,@dob,@major,@exp,@email,@password,@phone,0,@city);SET @ID=SCOPE_IDENTITY();"

//Your Parameters..
SqlParameter ID=new SqlParameter();
ID.Name="@ID";
ID.Direction=ParameterDirection.Output;
Command.Parameters.Add(ID);
Command.ExecuteNonQuery();
int id=(int)ID.Value;
 Query = "INSERT INTO seekers(name,sname,lname,status,gender,dob,major,experince,email,password,phone,valid,city) values(@name,@sname,@lname,@status,@gender,@dob,@major,@exp,@email,@password,@phone,0,@city);SELECT CAST(scope_identity() AS int);"

 int id= (Int32)Command.ExecuteScalar();

SCOPE_IDENTITY将返回一个小数,请尝试:

int ID = (int) (decimal) Command.ExecuteScalar(); 
不太清楚你所说的是什么意思:

它只是返回页面

Query = "INSERT INTO seekers(name,sname,lname,status,gender,dob,major,experince,email,password,phone,valid,city) values(@name,@sname,@lname,@status,@gender,@dob,@major,@exp,@email,@password,@phone,0,@city);SELECT SCOPE_IDENTITY();";

// setting up command definition
Command = new SqlCommand(Query, Connection);

// setting up command parameters
Command.Parameters.AddWithValue("email", txt_email.Text);
Command.Parameters.AddWithValue("gender", lst_gender.SelectedValue);
Command.Parameters.AddWithValue("status", lst_status.SelectedValue);
Command.Parameters.AddWithValue("phone", long.Parse("968" + txt_phone.Text));
Command.Parameters.AddWithValue("password", txt_password.Text);
Command.Parameters.AddWithValue("exp", lst_exp.SelectedValue);
Command.Parameters.AddWithValue("city", lst_exp.SelectedValue);
Command.Parameters.AddWithValue("major", lst_major.SelectedValue);
Command.Parameters.AddWithValue("name", txt_name.Text);
Command.Parameters.AddWithValue("sname", txt_sname.Text);
Command.Parameters.AddWithValue("lname", txt_lname.Text);
Command.Parameters.AddWithValue("dob", cld_birth.SelectedDate);

int ID = (int)Command.ExecuteScalar();
可能发布的代码抛出了一个异常,这会导致一些更高级别的代码执行您所说的“…返回\uuu页面”所指的任何操作


如果查看异常详细信息,您会发现更多关于发生了什么的信息:我怀疑这是一个
InvalidCastException
,因为您试图将Command.ExecuteScalar(一个带框的十进制数)返回的对象强制转换为int。

请使用set nocount off并重试


由于第一个execute语句是insert,返回的值是使用ExecuteScalar执行的记录数

,因此您无法执行Select语句。请参见此处的示例:我使用ExecuteScalar执行该语句。不确定返回的意思是什么,但表上是否有insert触发器?此外,该表确实有标识列?