如何在C#代码中使用Sql数据源选择的值
我正在SqlDataSource中检索用户的电子邮件id,并希望向此电子邮件id发送电子邮件。下面是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
<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();