2011-07-27 8 views
0

私はSQLHelperクラスで作業しています。 @Emailの値を取得する方法 ????????sqlhelper出力パラメータ

protected void Button1_Click(object sender, EventArgs e) 
    { 
     try 
     { 
     bl.user_id = TextBox1.Text; 
     DataTable dt= bl.forget(); 
     if (dt.Rows.Count != 0) 
     { 
      Response.Write( dt.Rows[0]["@Email"].ToString()); 
     } 
     } 
     catch (Exception g) 
     { 
      Response.Write(g.Message); 
     } 
    } 

BLLの一部.......

DataSet ds = SqlHelper.ExecuteDataset(bl.str, CommandType.StoredProcedure,  
       "forFetPasswo",new SqlParameter("@Email", bl.user_id)); 
        DataTable dt = new DataTable(); 
        if (ds.Tables.Count != 0) 
        { 
         dt = ds.Tables[0]; 
        } 
        return dt; 

SQL一部.......

Alter PROCEDURE Abc 
    @Email nvarchar(100)output 
AS 
BEGIN 
    if (@Email !=null) 
     begin 
     if exists(select * from UserLogin where Emailid [email protected]) 
     begin 
      select @Email ='mail send' 
     end   
     end 
     else 
     begin 
     select @Email='invalid email id' 
     end 

END 
GO 

答えて

0

あなたは、出力パラメータを返すが、それを処理していませんネットコード。あなたはデータセットを探しています。

クイックフィックスは、そうでなければ終了

であなたのストアドプロシージャにselect @Email AS emailを追加するだけ@email変数を割り当てるあなたのストアドプロシージャでは、別のoverload that uses direction

0

new SqlParameterを変更することで、あなたのような何かを追加する必要がありますそのコードでストアドプロシージャ

select @Email as Email 

とアクセスそれの終わりに

Response.Write( dt.Rows[0]["Email"].ToString()); 

そしてoutputパラメータを削除し、あなたのケースの使用で)

0

ユーザーのDataSetまたは出力パラメータのどちらか... あなたは一つの値だけを戻ってきているので....出力パラメータを使用します。 uができれば代わりにSELECTのセットSPの使用でも

var param=new SqlParameter("@Email",SqlDBType.VarChar,100).Direction=ParameterDirection.Output; 
SqlHelper.ExecuteNonQuery(con,Abc,param); 
var Email=param.Value.toString(); 

....ところでそれは

問題であまりありません
関連する問題