0

スコープ ID を機能させるために、何百万もの方法を試しました。__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();
4

3 に答える 3

0

SCOPE_IDENTITYは小数を返します。試してみてください。

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

あなたが何を意味するのかはあまり明確ではありません:

__Pageを返すだけです!!

おそらく、投稿されたコードは例外をスローしており、その結果、「...は__Pageを返します」という意味のことを実行する高レベルのコードが生成されます。

例外の詳細を見ると、何が起こったのかがわかります。これはInvalidCastException、Command.ExecuteScalar(ボックス化された小数)によって返されたオブジェクトをintにキャストしようとしているためだと思います。

于 2012-09-20T10:23:51.883 に答える
0

次のようにパラメータを試してみてください...

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();
于 2012-09-20T10:21:02.903 に答える
0

set nocount off を使用して試してください

最初の実行ステートメントが挿入されるため、戻り値は影響を受けたレコードの数です

于 2012-09-20T10:55:17.967 に答える