在select语句中使用多行

时间:2015-02-06 17:46:33

标签: c# asp.net

我在C#中有一个select语句,我想知道是否可以在两个不同的标签中使用显示电子邮件和用户名。

以下是查询:

SqlDataReader reader;
string sendMessage = "SELECT Email, username FROM aspnet_Membership WHERE UserId = @UserId";
using (SqlConnection myConnection = new SqlConnection(connectionString))
{
    myConnection.Open();
    SqlCommand myCommand = new SqlCommand(sendMessage, myConnection);
    myCommand.Parameters.AddWithValue("@UserId", newUserId);
    ArrayList emailArray = new ArrayList();
    label1 = myCommand.ExecuteReader();
    label2 = myCommand.ExecuteReader();
}

谢谢

2 个答案:

答案 0 :(得分:1)

是的,当然,但您需要只调用一次ExecuteReader,然后使用返回的SqlDataReader获取当前记录的字段值。 (当然读者返回的文本应该分配给标签的Text属性,而不是标签本身)

string sendMessage = "SELECT Email, username FROM aspnet_Membership WHERE UserId = @UserId";
using (SqlConnection myConnection = new SqlConnection(connectionString))
using (SqlCommand myCommand = new SqlCommand(sendMessage, myConnection))
{
    myConnection.Open();
    myCommand.Parameters.AddWithValue("@UserId", newUserId);
    using(SqlDataReader reader = myCommand.ExecuteReader())
    {
         while(reader.Read())
         {
              label1.Text = reader.GetString(reader.GetOrdinal("EMail"));
              label2.Text = reader.GetString(reader.GetOrdinal("UserName"));
         } 
   }

}

另外,不要忘记将命令和阅读器等一次性对象放在适当的使用声明

答案 1 :(得分:1)

只需拨打ExecuteReader一次,然后调用Read方法。然后您可以使用索引器获取值:

reader = myCommand.ExecuteReader();
reader.Read();
label1.Text = reader["Email"].ToString();
label2.Text = reader["username"].ToString();