如何在C#代码中使用Sql数据源选择的值

如何在C#代码中使用Sql数据源选择的值,c#,email,sqldatasource,sqldatareader,C#,Email,Sqldatasource,Sqldatareader,我正在SqlDataSource中检索用户的电子邮件id,并希望向此电子邮件id发送电子邮件。下面是SQL数据源的代码 <asp:SqlDataSource ID="UserDetailsSqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:UserDetailsConnectionString %>" SelectCommand="SELECT [LoweredEmai

我正在SqlDataSource中检索用户的电子邮件id,并希望向此电子邮件id发送电子邮件。下面是SQL数据源的代码

 <asp:SqlDataSource ID="UserDetailsSqlDataSource" runat="server" 
    ConnectionString="<%$ ConnectionStrings:UserDetailsConnectionString %>" 
    SelectCommand="SELECT [LoweredEmail] FROM [vw_aspnet_MembershipUsers] WHERE     ([UserName] = @UserName)">
   <SelectParameters>
        <asp:CookieParameter CookieName="userName" Name="UserName" Type="String" />
    </SelectParameters>
</asp:SqlDataSource>

我不知道如何获取在mail.to.Add()中检索到的电子邮件id

您可以通过编程方式调用的方法,该方法将返回以下内容之一:

  • DataView
    DataSourceMode
    设置为
    DataSet
  • IDataReader
    DataSourceMode
    设置为
    DataReader
下面是一个使用的示例:


尝试此操作,您可以修改代码以传递参数:

        string temp = string.Empty;
        string cmdText = "SELECT [LoweredEmail] FROM [vw_aspnet_MembershipUsers] WHERE     ([UserName] = @UserName)"
        using (SqlConnection conn = new SqlConnection(ConnectionString))
        {
            conn.Open();
            using (SqlCommand cmd = new SqlCommand(cmdText, conn))
            {
                cmd.CommandType = CommandType.Text;
                         cmd.Parameters.AddWithValue(@UserName, UserName);
                using (SqlDataReader reader = cmd.ExecuteReader())
                {
                    while(reader.Read())
                    {
                        temp = reader.GetValue(0).ToString(); // email ID
                    }
                }
            }
            conn.Close();

是否存在“MailMessage.To.Add()”方法?我在while(reader.Read())行收到以下错误。System.NullReferenceException:对象引用未设置为对象的实例。能否使用正在尝试的新代码更新原始帖子?我需要一些上下文我正在从SQL数据源获取电子邮件ID,然后尝试将该值输入到字段以发送电子邮件。下面是我为此编写的代码。var args=System.Web.UI.DataSourceSelectArguments.Empty;SqlDataReader=(SqlDataReader)UserDetailsSqlDataSource.Select(args);reader.Read();//我在这一行遇到错误:“System.NullReferenceException:对象引用未设置为对象的实例”字符串temp=reader.GetValue(0.ToString();邮寄至添加(临时);抱歉:应该是(reader.Read())等。我已经更新了代码。
var args = System.Web.UI.DataSourceSelectArguments.Empty;
var reader = (SqlDataReader) UserDetailsSqlDataSource.Select(args);

while(reader.Read()) {
   //do something with each returned record, e.g.
   MailMessage mail = new MailMessage();
   mail.To.Add(reader["LoweredEmail"].ToString());
}
        string temp = string.Empty;
        string cmdText = "SELECT [LoweredEmail] FROM [vw_aspnet_MembershipUsers] WHERE     ([UserName] = @UserName)"
        using (SqlConnection conn = new SqlConnection(ConnectionString))
        {
            conn.Open();
            using (SqlCommand cmd = new SqlCommand(cmdText, conn))
            {
                cmd.CommandType = CommandType.Text;
                         cmd.Parameters.AddWithValue(@UserName, UserName);
                using (SqlDataReader reader = cmd.ExecuteReader())
                {
                    while(reader.Read())
                    {
                        temp = reader.GetValue(0).ToString(); // email ID
                    }
                }
            }
            conn.Close();