2012-12-24 31 views
0

我想要得到的值到Datset,我的代码是在最后的方法如下数据集来清空

public DataSet GetMemberById(int memberId) 
     { 

      using (SqlConnection con = new SqlConnection(connectionString)) 
      { 
       using (SqlCommand cnn = new SqlCommand("selectmemberByID", con)) 
       { 
        cnn.CommandType = CommandType.StoredProcedure; 
        cnn.Parameters.Add(new SqlParameter("@id", SqlDbType.Int, 4)); 
        cnn.Parameters["@id"].Value = memberId; 

        using (DataSet ds = new DataSet()) 
        { 
         try 
         { 
          con.Open(); 
          cnn.ExecuteNonQuery(); 
          SqlDataAdapter da = new SqlDataAdapter(cnn); 
          da.Fill(ds); 

         } 

         catch (Exception e) 
         { 
         } 
         return ds; 
        } 
       } 
      } 
     } 




protected void Page_Load(object sender, EventArgs e) 
     { 
      if (Request.QueryString["MemberId"].ToString() != string.Empty) 
      { 
       int memberId=Convert.ToInt32(Request.QueryString["MemberId"]); 
       DataSet ds = new DataSet(); 
       ds = utility.GetMemberById(memberId); 
       GdMember.DataSource = ds; 
       GdMember.DataBind(); 
       //txtFirstName.Text = ds.Tables[0].Rows[0][1].ToString(); 
      } 
     } 

它显示了我一个错误没有在数据集中没有表。

stored procedure: 

Alter proc [dbo].[selectmemberByID] 
(
@memberId int=2 
) 
as 
begin 
select * from dbo.MemberDetail 
where [email protected] 
end 
+0

不要叫'ExecuteNonQuery'!当您调用'da.Fill(ds)'时,将执行存储过程并提取数据。无需再打这个电话了! –

+0

先生它仍然显示一个错误。 –

+0

你能告诉我们**完整的错误信息吗? –

回答

0

,你可以试着用下面的代码,而不是使用 “@Id”

cnn.Parameters.Add(new SqlParameter("@memberId", SqlDbType.Int, 4)); 
+0

谢谢我不知道。但从id更改为Memberid的作品。 –

0

如果您使用数据适配器,那么需要打开连接? 。同时检查参数是否正确传递给你的sp。