繁体   English   中英

Scope_Identity有什么问题?

[英]What is the wrong with Scope_Identity?

我尝试了数百万种方法来使范围标识起作用。 它只是返回__Page!

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;

或Tryb将输出强制转换如下...

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

您的意思还不是很清楚:

它只是返回__Page!

大概是发布的代码引发了异常,这导致一些更高级别的代码执行“ ... return __Page”的意思。

如果您查看异常详细信息,则会发现更多有关发生的情况:我怀疑这是InvalidCastException因为您正试图将Command.ExecuteScalar(空十进制)返回的对象转换为int。

使用set nocount off并尝试

在插入第一个execute语句时,返回值是有效的记录数

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM